High-level syntax design for geometry-based point cloud compression

ABSTRACT

An example device for decoding point cloud data includes memory configured to store the point cloud data and one or more processors implemented in circuitry and coupled to the memory. The one or more processors are configured to determine dimensions of a region box and determine dimensions of a slice bounding box. The one or more processors are also configured to decode a slice of the point cloud data associated with the slice bounding box. The dimensions of the region box are constrained to not exceed the dimensions of the slice bounding box.

This application is a continuation of U.S. Non-Provisional applicationSer. No. 17/223,789, filed Apr. 6, 2021, and titled “HIGH-LEVEL SYNTAXDESIGN FOR GEOMETRY-BASED POINT CLOUD COMPRESSION,” which claims thebenefit of U.S. Provisional Patent Application No. 63/006,660, filed onApr. 7, 2020, U.S. Provisional Patent Application No. 63/010,550, filedon Apr. 15, 2020, and U.S. Provisional Patent Application No.63/013,971, filed on Apr. 22, 2020, the entire contents of each of whichis incorporated by reference.

TECHNICAL FIELD

This disclosure relates to point cloud encoding and decoding.

SUMMARY

In general, this disclosure describes several techniques for high-levelsyntax design for geometry-based point cloud compression (G-PCC). Thesetechniques may address a number of potential issues in G-PCC coding.

In one example, this disclosure describes a method of decoding pointcloud data including determining dimensions of a region box, determiningdimensions of a slice bounding box, and decoding a slice of the pointcloud data associated with the slice bounding box, wherein thedimensions of the region box are constrained to not exceed thedimensions of the slice bounding box.

In another example, this disclosure describes a method of decoding pointcloud data determining a first slice identifier (ID) of a first geometryslice associated with a frame of the point cloud data, determining asecond slice ID of a second geometry slice associated with the frame ofthe point cloud data, based on the second slice ID being equal to thefirst slice ID, determining the second slice to contain identicalcontent to the first slice, and decoding the point cloud data based onthe first slice ID.

In another example, this disclosure describes a method of decoding pointcloud data determining whether an attribute dimension of an attribute isgreater than 1, based on the attribute dimension being greater than 1,parsing an attribute slice header syntax element indicative of a deltaquantization parameter, and decoding the point cloud data based on thedelta quantization parameter.

In another example, this disclosure describes a device comprising memoryconfigured to store point cloud data and one or more processorsimplemented in circuitry and communicatively coupled to the memory, theone or more processors being configured to determine dimensions of aregion box, determine dimensions of a slice bounding box, and decode aslice of the point cloud data associated with the slice bounding box,wherein the dimensions of the region box are constrained to not exceedthe dimensions of the slice bounding box.

In another example, this disclosure describes a device comprising memoryconfigured to store point cloud data and one or more processorsimplemented in circuitry and communicatively coupled to the memory, theone or more processors being configured to determine a first sliceidentifier (ID) of a first geometry slice associated with a frame of thepoint cloud data, determine a second slice ID of a second geometry sliceassociated with the frame of the point cloud data, based on the secondslice ID being equal to the first slice ID, determine the second sliceto contain identical content to the first slice, and decode the pointcloud data based on the first slice ID.

In another example, this disclosure describes a device comprising memoryconfigured to store point cloud data and one or more processorsimplemented in circuitry and communicatively coupled to the memory, theone or more processors being configured to determine whether anattribute dimension of an attribute is greater than 1, based on theattribute dimension being greater than 1, parse an attribute sliceheader syntax element indicative of a delta quantization parameter, anddecode the point cloud data based on the delta quantization parameter.

The details of one or more examples are set forth in the accompanyingdrawings and the description below. Other features, objects, andadvantages will be apparent from the description, drawings, and claims.

BRIEF DESCRIPTION OF DRAWINGS

FIG. 1 is a block diagram illustrating an example encoding and decodingsystem that may perform the techniques of this disclosure.

FIG. 2 is a block diagram illustrating an example Geometry Point CloudCompression (G-PCC) encoder.

FIG. 3 is a block diagram illustrating an example G-PCC decoder.

FIG. 4 is a conceptual diagram illustrating an example Level of Details(LoD) generation process.

FIG. 5 is a conceptual diagram illustrating example possible pointprediction using LoD.

FIG. 6 is a conceptual diagram illustrating an example of G-PCC decodingwith different LoD.

FIG. 7 is a flow diagram of example region box and slice bounding boxtechniques according to this disclosure.

FIG. 8 is a flow diagram of an example slice identifier techniquesaccording to this disclosure.

FIG. 9 is a flow diagram illustrating an example of delta quantizationparameter techniques according to this disclosure.

DETAILED DESCRIPTION

In certain draft standards for geometry-based point cloud compression(G-PCC), issues may exist with high-level syntax. For example,dimensions of a region box may exceed the dimensions of a slice thatcontains the region. In such a case, signaling the region width, height,and depth that may exceed the dimensions of the slice may not add valuebecause there are no points in the slice that exceed the slice boundingbox. This may unnecessarily increase signaling overhead and wasteprocessing power on both a G-PCC encoder and G-PCC decoder.

In another example, there may be no restriction on the range of a syntaxelement indicative of the size of a trisoup node. When this syntaxelement exceeds the dimensions of a slice, this may lead to thegeneration of negative values of a variable indicative of the maximumgeometry octree depth, which may be undesirable as this condition maylead to decoding errors.

In another example, there is no restriction on a slice ID that may beassigned to a geometry slice. For example, two different geometry slicesin a point cloud frame may be assigned the same slice ID, even if theycontain different content. This may be undesirable as this condition maylead to ambiguities that may cause decoding errors.

In another example, some parameters are not applicable to aone-dimensional attribute. However, the parameters may still be presentand may still need to be signaled. This may lead to an unnecessaryincrease in signaling overhead and waste processing power on both aG-PCC encoder and G-PCC decoder.

In another example, each slice may only be able to specify one regionwhere a delta quantization parameter may be applied. It may be moredesirable to enable the flexibility of having a plurality of regionswhere the delta quantization parameter may be applied. Only having theability to specify one single region where a delta quantizationparameter may be applied may constrain the choice of coding the pointcloud in an efficient manner and/or in a manner that is takes intoconsideration a perceptual quality of the point cloud.

In another example, there may be no restriction on the value range of ageometry parameter set ID in a geometry slice header, while there may bea restriction on the value range of a geometry parameter set ID in ageometry parameter set. This condition may lead to an unnecessaryincrease in signaling overhead and waste processing power on both aG-PCC encoder and G-PCC decoder in the case where the value of thegeometry parameter set ID in the geometry slice header is larger thanthat of the geometry parameter set ID in the geometry parameter set.This condition may also lead to ambiguities that may cause decodingerrors.

In yet another example, there may be no restriction on the value rangeof a attribute parameter set ID in an attribute slice header, whilethere may be a restriction on the value range of an attribute parameterset ID in an attribute parameter set. This condition may lead to anunnecessary increase in signaling overhead and waste processing power onboth a G-PCC encoder and G-PCC decoder in the case where the value ofthe attribute parameter set ID in the attribute slice header is largerthan that of the attribute parameter set ID in the attribute parameterset. This condition may also lead to ambiguities that may cause decodingerrors.

According to the techniques of this disclosure, the above issues andother issues in high-level syntax design with G-PCC coding may beaddressed as discussed in more detail below. By addressing these issues,signaling overhead may be reduced, processing power may be saved,decoding errors may be reduced, and/or better reproduction of the pointcloud at a decoder may be achieved.

FIG. 1 is a block diagram illustrating an example encoding and decodingsystem 100 that may perform the techniques of this disclosure. Thetechniques of this disclosure are generally directed to coding (encodingand/or decoding) point cloud data. In general, point cloud data includesany data for processing a point cloud. The coding may be effective incompressing and/or decompressing point cloud data.

As shown in FIG. 1 , system 100 includes a source device 102 and adestination device 116. Source device 102 provides encoded point clouddata to be decoded by a destination device 116. Particularly, in theexample of FIG. 1 , source device 102 provides the point cloud data todestination device 116 via a computer-readable medium 110. Source device102 and destination device 116 may comprise any of a wide range ofdevices, including desktop computers, notebook (i.e., laptop) computers,tablet computers, set-top boxes, telephone handsets such as smartphones,televisions, cameras, display devices, digital media players, videogaming consoles, video streaming devices, terrestrial or marinevehicles, spacecraft, aircraft, robots, LIDAR devices, satellites, orthe like. In some cases, source device 102 and destination device 116may be equipped for wireless communication.

In the example of FIG. 1 , source device 102 includes a data source 104,a memory 106, a G-PCC encoder 20, and an output interface 108.Destination device 116 includes an input interface 122, a G-PCC decoder300, a memory 120, and a data consumer 118. In accordance with thisdisclosure, G-PCC encoder 200 of source device 102 and G-PCC decoder 300of destination device 116 may be configured to apply the techniques ofthis disclosure related to high level syntax for geometry-based pointcloud compression. Thus, source device 102 represents an example of anencoding device, while destination device 116 represents an example of adecoding device. In other examples, source device 102 and destinationdevice 116 may include other components or arrangements. For example,source device 102 may receive data (e.g., point cloud data) from aninternal or external source. Likewise, destination device 116 mayinterface with an external data consumer, rather than include a dataconsumer in the same device.

System 100 as shown in FIG. 1 is merely one example. In general, otherdigital encoding and/or decoding devices may perform of the techniquesof this disclosure related to high level syntax for geometry point cloudcompression. Source device 102 and destination device 116 are merelyexamples of such devices in which source device 102 generates coded datafor transmission to destination device 116. This disclosure refers to a“coding” device as a device that performs coding (encoding and/ordecoding) of data. Thus, G-PCC encoder 200 and G-PCC decoder 300represent examples of coding devices, in particular, an encoder and adecoder, respectively. In some examples, source device 102 anddestination device 116 may operate in a substantially symmetrical mannersuch that each of source device 102 and destination device 116 includesencoding and decoding components. Hence, system 10 may support one-wayor two-way transmission between source device 102 and destination device116, e.g., for streaming, playback, broadcasting, telephony, navigation,and other applications.

In general, data source 104 represents a source of data (i.e., raw,unencoded point cloud data) and may provide a sequential series of“frames”) of the data to G-PCC encoder 200, which encodes data for theframes. Data source 104 of source device 102 may include a point cloudcapture device, such as any of a variety of cameras or sensors, e.g., a3D scanner or a light detection and ranging (LIDAR) device, one or morevideo cameras, an archive containing previously captured data, and/or adata feed interface to receive data from a data content provider.Alternatively or additionally, point cloud data may becomputer-generated from scanner, camera, sensor or other data. Forexample, data source 104 may generate computer graphics-based data asthe source data, or produce a combination of live data, archived data,and computer-generated data. In each case. G-PCC encoder 200 encodes thecaptured, pre-captured, or computer-generated data. G-PCC encoder 200may rearrange the frames from the received order (sometimes referred toas “display order”) into a coding order for coding. G-PCC encoder 200may generate one or more bitstreams including encoded data. Sourcedevice 102 may then output the encoded data via output interface 108onto computer-readable medium 110 for reception and/or retrieval by,e.g., input interface 122 of destination device 116.

Memory 106 of source device 102 and memory 120 of destination device 116may represent general purpose memories. In some examples, memory 106 andmemory 120 may store raw data, e.g., raw data from data source 104 andraw, decoded data from G-PCC decoder 300. Additionally or alternatively,memory 106 and memory 120 may store software instructions executable by,e.g., G-PCC encoder 200 and G-PCC decoder 300, respectively. Althoughmemory 106 and memory 120 are shown separately from G-PCC encoder 200and G-PCC decoder 300 in this example, it should be understood thatG-PCC encoder 200 and G-PCC decoder 300 may also include internalmemories for functionally similar or equivalent purposes. Furthermore,memory 106 and memory 120 may store encoded data, e.g., output fromG-PCC encoder 200 and input to G-PCC decoder 300. In some examples,portions of memory 106 and memory 120 may be allocated as one or morebuffers, e.g., to store raw, decoded, and/or encoded data. For instance,memory 106 and memory 120 may store data representing a point cloud.

Computer-readable medium 110 may represent any type of medium or devicecapable of transporting the encoded data from source device 102 todestination device 116. In one example, computer-readable medium 110represents a communication medium to enable source device 102 totransmit encoded data directly to destination device 116 in real-time,e.g., via a radio frequency network or computer-based network. Outputinterface 108 may modulate a transmission signal including the encodeddata, and input interface 122 may demodulate the received transmissionsignal, according to a communication standard, such as a wirelesscommunication protocol. The communication medium may comprise anywireless or wired communication medium, such as a radio frequency (RF)spectrum or one or more physical transmission lines. The communicationmedium may form part of a packet-based network, such as a local areanetwork, a wide-area network, or a global network such as the Internet.The communication medium may include routers, switches, base stations,or any other equipment that may be useful to facilitate communicationfrom source device 102 to destination device 116.

In some examples, source device 102 may output encoded data from outputinterface 108 to storage device 112. Similarly, destination device 116may access encoded data from storage device 112 via input interface 122.Storage device 112 may include any of a variety of distributed orlocally accessed data storage media such as a hard drive, Blu-ray discs,DVDs, CD-ROMs, flash memory, volatile or non-volatile memory, or anyother suitable digital storage media for storing encoded data.

In some examples, source device 102 may output encoded data to fileserver 114 or another intermediate storage device that may store theencoded data generated by source device 102. Destination device 116 mayaccess stored data from file server 114 via streaming or download. Fileserver 114 may be any type of server device capable of storing encodeddata and transmitting that encoded data to the destination device 116.File server 114 may represent a web server (e.g., for a website), a FileTransfer Protocol (FTP) server, a content delivery network device, or anetwork attached storage (NAS) device. Destination device 116 may accessencoded data from file server 114 through any standard data connection,including an Internet connection. This may include a wireless channel(e.g., a Wi-Fi connection), a wired connection (e.g., digital subscriberline (DSL), cable modem, etc.), or a combination of both that issuitable for accessing encoded data stored on file server 114. Fileserver 114 and input interface 122 may be configured to operateaccording to a streaming transmission protocol, a download transmissionprotocol, or a combination thereof.

Output interface 108 and input interface 122 may represent wirelesstransmitters/receivers, modems, wired networking components (e.g.,Ethernet cards), wireless communication components that operateaccording to any of a variety of IEEE 802.11 standards, or otherphysical components. In examples where output interface 108 and inputinterface 122 comprise wireless components, output interface 108 andinput interface 122 may be configured to transfer data, such as encodeddata, according to a cellular communication standard, such as 4G, 4G-LTE(Long-Term Evolution), LTE Advanced, 5G, or the like. In some exampleswhere output interface 108 comprises a wireless transmitter, outputinterface 108 and input interface 122 may be configured to transferdata, such as encoded data, according to other wireless standards, suchas an IEEE 802.11 specification, an IEEE 802.15 specification (e.g.,ZigBee™), a Bluetooth™ standard, or the like. In some examples, sourcedevice 102 and/or destination device 116 may include respectivesystem-on-a-chip (SoC) devices. For example, source device 102 mayinclude an SoC device to perform the functionality attributed to G-PCCencoder 200 and/or output interface 108, and destination device 116 mayinclude an SoC device to perform the functionality attributed to G-PCCdecoder 300 and/or input interface 122.

The techniques of this disclosure may be applied to encoding anddecoding in support of any of a variety of applications, such ascommunication between autonomous vehicles, communication betweenscanners, cameras, sensors and processing devices such as local orremote servers, geographic mapping, or other applications.

Input interface 122 of destination device 116 receives an encodedbitstream from computer-readable medium 110 (e.g., a communicationmedium, storage device 112, file server 114, or the like). The encodedbitstream may include signaling information defined by G-PCC encoder200, which is also used by G-PCC decoder 300, such as syntax elementshaving values that describe characteristics and/or processing of codedunits (e.g., slices, pictures, groups of pictures, sequences, or thelike). Data consumer 118 uses the decoded data. For example, dataconsumer 118 may use the decoded data to determine the locations ofphysical objects. In some examples, data consumer 118 may comprise adisplay to present imagery based on a point cloud.

G-PCC encoder 200 and G-PCC decoder 300 each may be implemented as anyof a variety of suitable encoder and/or decoder circuitry, such as oneor more microprocessors, digital signal processors (DSPs), applicationspecific integrated circuits (ASICs), field programmable gate arrays(FPGAs), discrete logic, software, hardware, firmware or anycombinations thereof. When the techniques are implemented partially insoftware, a device may store instructions for the software in asuitable, non-transitory computer-readable medium and execute theinstructions in hardware using one or more processors to perform thetechniques of this disclosure. Each of G-PCC encoder 200 and G-PCCdecoder 300 may be included in one or more encoders or decoders, eitherof which may be integrated as part of a combined encoder/decoder (CODEC)in a respective device. A device including G-PCC encoder 200 and/orG-PCC decoder 300 may comprise one or more integrated circuits,microprocessors, and/or other types of devices.

G-PCC encoder 200 and G-PCC decoder 300 may operate according to acoding standard, such as video point cloud compression (V-PCC) standardof a geometry point cloud compression (G-PCC) standard. This disclosuremay generally refer to coding (e.g., encoding and decoding) of picturesto include the process of encoding or decoding data. An encodedbitstream generally includes a series of values for syntax elementsrepresentative of coding decisions (e.g., coding modes).

This disclosure may generally refer to “signaling” certain information,such as syntax elements. The term “signaling” may generally refer to thecommunication of values for syntax elements and/or other data used todecode encoded data. That is, G-PCC encoder 200 may signal values forsyntax elements in the bitstream. In general, signaling refers togenerating a value in the bitstream. As noted above, source device 102may transport the bitstream to destination device 116 substantially inreal time, or not in real time, such as might occur when storing syntaxelements to storage device 112 for later retrieval by destination device116.

ISO/IEC MPEG (JTC 1/SC 29/WG 11) is studying the potential need forstandardization of point cloud coding technology with a compressioncapability that significantly exceeds that of the current approaches andwill target to create the standard. The group is working together onthis exploration activity in a collaborative effort known as the3-Dimensional Graphics Team (3DG) to evaluate compression technologydesigns proposed by their experts in this area.

Point cloud compression activities are categorized in two differentapproaches. The first approach is “Video point cloud compression”(V-PCC), which segments the 3D object, and project the segments inmultiple 2D planes (which are represented as “patches” in the 2D frame),which are further coded by a legacy 2D video codec such as a HighEfficiency Video Coding (HEVC) (ITU-T H.265) codec. The second approachis “Geometry-based point cloud compression” (G-PCC), which directlycompresses 3D geometry i.e., position of a set of points in 3D space,and associated attribute values (for each point associated with the 3Dgeometry). G-PCC addresses the compression of point clouds in bothCategory 1 (static point clouds) and Category 3 (dynamically acquiredpoint clouds). A recent draft of the G-PCC standard is available inG-PCC DIS, ISO/EC JTC1/SC29/WG11 w19088, Brussels, Belgium, January2020, and a description of the codec is available in G-PCC CodecDescription v6, ISO/IEC JTC1/SC29/WG11 w19091, Brussels, Belgium,January 2020.

A point cloud contains a set of points in a 3D space and may haveattributes associated with the point. The attributes may be colorinformation such as R, G, B or Y, Cb, Cr, or reflectance information, orother attributes. Point clouds may be captured by a variety of camerasor sensors such as LIDAR sensors and 3D scanners and may also becomputer-generated. Point cloud data are used in a variety ofapplications including, but not limited to, construction (modeling),graphics (3D models for visualizing and animation), and the automotiveindustry (LIDAR sensors used to help in navigation).

The 3D space occupied by a point cloud data may be enclosed by a virtualbounding box. The position of the points in the bounding box may berepresented by a certain precision; therefore, the positions of one ormore points may be quantized based on the precision. At the smallestlevel, the bounding box is split into voxels which are the smallest unitof space represented by a unit cube. A voxel in the bounding box may beassociated with zero, one, or more than one point. The bounding box maybe split into multiple cube/cuboid regions, which may be called tiles.Each tile may be coded into one or more slices. The partitioning of thebounding box into slices and tiles may be based on number of points ineach partition, or based on other considerations (e.g., a particularregion may be coded as tiles). The slice regions may be furtherpartitioned using splitting decisions similar to those in video codecs.

FIG. 2 provides an overview of G-PCC encoder 200. FIG. 3 provides anoverview of G-PCC decoder 300. The modules shown are logical, and do notnecessarily correspond one-to-one to implemented code in the referenceimplementation of G-PCC codec, i.e., TMC13 test model software studiedby ISO/IEC MPEG (JTC 1/SC 29/WG 1).

In both G-PCC encoder 200 and G-PCC decoder 300, point cloud positionsare coded first. Attribute coding depends on the decoded geometry. InFIG. 2 and FIG. 3 , the gray-shaded modules are options typically usedfor Category 1 data. Diagonal-crosshatched modules are options typicallyused for Category 3 data. All the other modules are common betweenCategories 1 and 3.

For Category 3 data, the compressed geometry is typically represented asan octree from the root all the way down to a leaf level of individualvoxels. For Category 1 data, the compressed geometry is typicallyrepresented by a pruned octree (i.e., an octree from the root down to aleaf level of blocks larger than voxels) plus a model that approximatesthe surface within each leaf of the pruned octree. In this way, bothCategory 1 and 3 data share the octree coding mechanism, while Category1 data may in addition approximate the voxels within each leaf with asurface model. The surface model used is a triangulation comprising 1-10triangles per block, resulting in a triangle soup. The Category 1geometry codec is therefore known as the Trisoup geometry codec, whilethe Category 3 geometry codec is known as the Octree geometry codec.

At each node of an octree, an occupancy is signaled (when not inferred)for one or more of its child nodes (up to eight nodes). Multipleneighborhoods are specified including (a) nodes that share a face with acurrent octree node, (b) nodes that share a face, edge or a vertex withthe current octree node, etc. Within each neighborhood, the occupancy ofa node and/or its children may be used to predict the occupancy of thecurrent node or its children. For points that are sparsely populated incertain nodes of the octree, the codec also supports a direct codingmode where the 3D position of the point is encoded directly. A flag maybe signaled to indicate that a direct mode is signaled. At the lowestlevel, the number of points associated with the octree node/leaf nodemay also be coded.

Once the geometry is coded, the attributes corresponding to the geometrypoints are coded. When there are multiple attribute points correspondingto one reconstructed/decoded geometry point, an attribute value may bederived that is representative of the reconstructed point.

There are three attribute coding methods in G-PCC: Region AdaptiveHierarchical Transform (RAHT) coding, interpolation-based hierarchicalnearest-neighbour prediction (Predicting Transform), andinterpolation-based hierarchical nearest-neighbour prediction with anupdate/lifting step (Lifting Transform). RAHT and lifting are typicallyused for Category 1 data, while Predicting is typically used forCategory 3 data. However, either method may be used for any data, and,just like with the geometry codecs in G-PCC, the attribute coding methodused to code the point cloud is specified in the bitstream.

The coding of the attributes may be conducted in a level-of-detail(LOD), where with each level of detail a finer representation of thepoint cloud attribute may be obtained. Each level of detail may bespecified based on distance metric from the neighboring nodes or basedon a sampling distance.

At G-PCC encoder 200, the residual obtained as the output of the codingmethods for the attributes are quantized. The quantized residual may becoded using context adaptive arithmetic coding.

In the example of FIG. 2 , G-PCC encoder 200 may include a coordinatetransform unit 202, a color transform unit 204, a voxelization unit 206,an attribute transfer unit 208, an octree analysis unit 210, a surfaceapproximation analysis unit 212, an arithmetic encoding unit 214, ageometry reconstruction unit 216, an RAHT unit 218, a LOD generationunit 220, a lifting unit 222, a coefficient quantization unit 224, andan arithmetic encoding unit 226.

As shown in the example of FIG. 2 , G-PCC encoder 200 may receive a setof positions and a set of attributes. The positions may includecoordinates of points in a point cloud. The attributes may includeinformation about points in the point cloud, such as colors associatedwith points in the point cloud.

Coordinate transform unit 202 may apply a transform to the coordinatesof the points to transform the coordinates from an initial domain to atransform domain. This disclosure may refer to the transformedcoordinates as transform coordinates. Color transform unit 204 may applya transform to transform color information of the attributes to adifferent domain. For example, color transform unit 204 may transformcolor information from an RGB color space to a YCbCr color space.

Furthermore, in the example of FIG. 2 , voxelization unit 206 mayvoxelize the transform coordinates. Voxelization of the transformcoordinates may include quantization and removing some points of thepoint cloud. In other words, multiple points of the point cloud may besubsumed within a single “voxel,” which may thereafter be treated insome respects as one point. Furthermore, octree analysis unit 210 maygenerate an octree based on the voxelized transform coordinates.Additionally, in the example of FIG. 2 , surface approximation analysisunit 212 may analyze the points to potentially determine a surfacerepresentation of sets of the points. Arithmetic encoding unit 214 mayentropy encode syntax elements representing the information of theoctree and/or surfaces determined by surface approximation analysis unit212. G-PCC encoder 200 may output these syntax elements in a geometrybitstream.

Geometry reconstruction unit 216 may reconstruct transform coordinatesof points in the point cloud based on the octree, data indicating thesurfaces determined by surface approximation analysis unit 212, and/orother information. The number of transform coordinates reconstructed bygeometry reconstruction unit 216 may be different from the originalnumber of points of the point cloud because of voxelization and surfaceapproximation. This disclosure may refer to the resulting points asreconstructed points. Attribute transfer unit 208 may transferattributes of the original points of the point cloud to reconstructedpoints of the point cloud.

Furthermore, RAHT unit 218 may apply RAHT coding to the attributes ofthe reconstructed points. Alternatively or additionally, LOD generationunit 220 and lifting unit 222 may apply LOD processing and lifting,respectively, to the attributes of the reconstructed points. RAHT unit218 and lifting unit 222 may generate coefficients based on theattributes. Coefficient quantization unit 224 may quantize thecoefficients generated by RAHT unit 218 or lifting unit 222. Arithmeticencoding unit 226 may apply arithmetic coding to syntax elementsrepresenting the quantized coefficients. G-PCC encoder 200 may outputthese syntax elements in an attribute bitstream.

In the example of FIG. 3 , G-PCC decoder 300 may include a geometryarithmetic decoding unit 302, an attribute arithmetic decoding unit 304,an octree synthesis unit 306, an inverse quantization unit 308, asurface approximation synthesis unit 310, a geometry reconstruction unit312, a RAHT unit 314, a LoD generation unit 316, an inverse lifting unit318, an inverse transform coordinate unit 320, and an inverse transformcolor unit 322.

G-PCC decoder 300 may obtain a geometry bitstream and an attributebitstream. Geometry arithmetic decoding unit 302 of G-PCC decoder 300may apply arithmetic decoding (e.g., Context-Adaptive Binary ArithmeticCoding (CABAC) or other type of arithmetic decoding) to syntax elementsin the geometry bitstream. Similarly, attribute arithmetic decoding unit304 may apply arithmetic decoding to syntax elements in the attributebitstream.

Octree synthesis unit 306 may synthesize an octree based on syntaxelements parsed from the geometry bitstream. In instances where surfaceapproximation is used in the geometry bitstream, surface approximationsynthesis unit 310 may determine a surface model based on syntaxelements parsed from the geometry bitstream and based on the octree.

Furthermore, geometry reconstruction unit 312 may perform areconstruction to determine coordinates of points in a point cloud.Inverse transform coordinate unit 320 may apply an inverse transform tothe reconstructed coordinates to convert the reconstructed coordinates(positions) of the points in the point cloud from a transform domainback into an initial domain.

Additionally, in the example of FIG. 3 , inverse quantization unit 308may inverse quantize attribute values. The attribute values may be basedon syntax elements obtained from the attribute bitstream (e.g.,including syntax elements decoded by attribute arithmetic decoding unit304).

Depending on how the attribute values are encoded, RAHT unit 314 mayperform RAHT coding to determine, based on the inverse quantizedattribute values, color values for points of the point cloud.Alternatively, LoD generation unit 316 and inverse lifting unit 318 maydetermine color values for points of the point cloud using a level ofdetail-based technique.

Furthermore, in the example of FIG. 3 , inverse transform color unit 322may apply an inverse color transform to the color values. The inversecolor transform may be an inverse of a color transform applied by colortransform unit 204 of G-PCC encoder 200. For example, color transformunit 204 may transform color information from an RGB color space to aYCbCr color space. Accordingly, inverse color transform unit 322 maytransform color information from the YCbCr color space to the RGB colorspace.

The various units of FIG. 2 and FIG. 3 are illustrated to assist withunderstanding the operations performed by G-PCC encoder 200 and G-PCCdecoder 300. The units may be implemented as fixed-function circuits,programmable circuits, or a combination thereof. Fixed-function circuitsrefer to circuits that provide particular functionality, and are preseton the operations that can be performed. Programmable circuits refer tocircuits that can be programmed to perform various tasks, and provideflexible functionality in the operations that can be performed. Forinstance, programmable circuits may execute software or firmware thatcause the programmable circuits to operate in the manner defined byinstructions of the software or firmware. Fixed-function circuits mayexecute software instructions (e.g., to receive parameters or outputparameters), but the types of operations that the fixed-functioncircuits perform are generally immutable. In some examples, one or moreof the units may be distinct circuit blocks (fixed-function orprogrammable), and in some examples, one or more of the units may beintegrated circuits.

Non-normative quantization and scaling in G-PCC is now described. Anoriginal point cloud may be represented in a floating-point format or ata very high bit depth. Voxelization unit 206 may quantize and voxelizethe input point cloud at a certain bit depth. G-PCC encoder 200 mayapply the quantization for the purpose of voxelization, and a scalingmay be performed at the decoder side. e.g., by G-PCC decoder 300, mainlyfor the mapping of the decoded point cloud (e.g., in voxels unit) in anapplication specific physical space (e.g., in a physical dimension).G-PCC decoder 300 may use a scale value for this operation that issignaled by G-PCC encoder 200 using the syntax elementssps_source_scale_factor_numerator_minus1 andsps_source_scale_factor_denominator_minus1. The quantization processbeing a pre-processing step (prior to encoding) and the scaling processbeing a post-processing step (after decoding) does not impact theoverall coding process. Rather, the quantization process and scalingprocess are non-normative in nature.

sps_source_scale_factor_numerator_minus1 ue(v)sps_source_scale_factor_denominator_minus1 ue(v)

For purposes of this disclosure, at the encoder side (e.g., G-PCCencoder 200), the point cloud before the non-normative quantization willbe referred to as an “unquantized point cloud” and the point cloud afterthe non-normative quantization will be referred to as a “quantized pointcloud.” This quantization is not related to the quantization that may bedone by a G-PCC codec as part of the encoding or decoding process.Similarly, the output of the G-PCC decoder (e.g., G-PCC decoder 300) isreferred to as a quantized point cloud; the output of any non-normativescaling at the decoder-side is referred to as an unquantized pointcloud. It is again noted that the output of the G-PCC decoder (e.g.,G-PCC decoder 300) may be the result of normative scaling operations.

Bounding boxes in G-PCC are now described. Similar to the notion ofpicture width and height in images and in video, point clouds also havea notion of a bounding box whereby all the points in a point cloud areconsidered to be present within the bounding box. In other words, abounding box is defined such that it contains all the points in thepoint cloud.

A source bounding box is now described. At the time of capture orgeneration of a point cloud, a bounding box may be specified to captureall the points of a point cloud. For example, source device 102 mayspecify the bounding box. This bounding box may be referred to as thesource bounding box. In G-PCC, a sequence parameter set (SPS) boundingbox syntax element (e.g., seq_bounding_box_present_flag) is specifiedthat may be indicative of the source bounding box. For the purpose ofthis disclosure, the SPS bounding box may be referred to as the sourcebounding box. The units used to describe the source bounding box are notdefined in G-PCC. A given application may therefore determine theseunits. The syntax and semantics associated with the SPS bounding box areprovided below.

It is presumed (because this behavior is not defined in the G-PCCstandard) that the output of G-PCC decoder 300 will be scaled using asource scale factor (derived fromsps_source_scale_factor_numerator_minus1 andsps_source_scale_factor_denominator_minus1) and the output of this(non-normative) scaling is contained within the SPS bounding box. Forexample, an application, a separate device, or a G-PCC decoder deviceitself may scale the output of G-PCC decoder 300. In some examples,G-PCC decoder 300 may parse the scale factor syntax elements. In otherexamples, the application or separate device may parse the scale factorsyntax elements.

Source Bounding Box-Related Syntax

Descriptor seq_parameter_set( ) {  main_profile_compatibility_flag u(1) reserved_profile_compatibility_2bits u(22) [Ed, assign bits from thiswhen there is a profile defined]  unique_point_positions_constraint_flagu(1)  level_idc u(8)  sps_seq_parameter_set_id ue(v) sps_bounding_box_present_flag u(1)  if( sps_bounding_box_present_flag ){   sps_bounding_box_offset_x se(v)   sps_bounding_box_offset_y se(v)  sps_bounding_box_offset_z se(v)   sps_bounding_box_offset_log2_scaleue(v)   sps_bounding_box_size_width ue(v)   sps_bounding_box_size_heightue(v)   sps_bounding_box_size_depth ue(v)  } sps_source_scale_factor_numerator_minus1 ue(v) sps_source_scale_factor_denominator_minus1 ue(v) sps_num_attribute_sets ue(v)  for( i = 0; i< sps_num_attribute_sets;i++ ) {

Source bounding box-related semantics are as follows:

main_profile_compatibility_23bitsflag equal to 1 specifies that thebitstream conforms to the Main profile. main_profile_compatibility_flagequal to 0 specifies that the bitstream conforms to a profile other thanthe Main profile.

reserved_profile_compatibility_22 shall be equal to 0 in bitstreamsconforming to this version of this Specification. Other values forreserved_profile_compatibility_22bits are reserved for future use byISO/IEC. Decoders shall ignore the value ofreserved_profile_compatibility_2bits.

unique_point_positions_constraint_flag equal to 1 indicates that in eachpoint cloud frame that refers to the current SPS, all output points haveunique positions. unique_point_positions_constraint_flag equal to 0indicates that in any point cloud frame that refers to the current SPS,two and more output points may have the same position.

Note—For example, even if all points are unique in each slices [sic],the points from different slices in a frame may overlap. In that case,unique_point_positions_constraint_flag should be set to 0.

level_idc indicates a level to which the bitstream conforms as specifiedin Annex A. Bitstreams shall not contain values of level_idc other thanthose specified in Annex A. Other values of level_idc are reserved forfuture use by ISO/IEC.

sps_seq_parameter_set_id provides an identifier for the SPS forreference by other syntax elements. The value ofsps_seq_parameter_set_id shall be 0 in bitstreams conforming to thisversion of this Specification. The value other than 0 forsps_seq_parameter_set_id is reserved for future use by ISO/IEC.

sps_bounding_box_present_flag equal to 1 indicates that a bounding boxsps_bounding_box_present_flag equal to 0 indicates that the size of thebounding box is undefined.

sps_bonding_box_offset_x, sps_bounding_box_offset_y, andsps_bounding_box_offset_z indicate quantised x, y, and z offsets of thesource bounding box in Cartesian coordinates. When not present, thevalues of sps_bounding_box_offset_x, sps_bounding_box_offset_y, andsps_bounding_box_offset_z are each inferred to be 0.

sps_bounding_box_offset_log2_scale indicates the scaling factor to scalethe quantised x, y, and z source bounding box offsets. When not present,the value of sps_bounding_box_offset_log2_scale is inferred to be 0.

sps_boundingbox_size_width, sps_bounding_box_size_height, andsps_bounding_box_size_depth indicate the width, height, and depth of thesource bounding box in Cartesian coordinates.

sps_source_scale_factor_numerator_minus1 plus 1 indicates the scalefactor numerator of the source point cloud.

sps_source_scale_factor_denominator_minus1 plus 1 indicates the scalefactor denominator of the source point cloud.

Tile bounding boxes are now described. In addition to the sourcebounding box, G-PCC also specifies tile bounding boxes. Tile boundingboxes are associated with the points of a tile. The tile bounding boxesare signaled in the tile_inventory( ) syntax. Each tile_inventory( )syntax structure is associated with a frame specified by tile_frame_idx.

Tile Inventory Syntax

Descriptor tile_inventory( ) {  tile_frame_idx ?  num_files_minus1 u(16) for( i = 0; i <= num_tiles_minus1; i++ ) {  tile_bounding_box_offset_x[ i ] se(v)   tile_bounding_box_offset_y[ i] se(v)   tile_bounding_box_offset_z[ i ] se(v)  tile_bounding_box_size_width[ i ] ue(v)  tile_bounding_box_size_height[ i ] ue(v)  tile_bounding_box_size_depth[ i ] ue(v)  }  byte_alignment( ) }

Tile inventory semantics are as follows:

num_tiles_minus1 plus 1 specifies the number of tile bounding boxespresent in the tile inventory.

tile_bounding_box_offset_x[i], tile_bounding_box_offset_y[i], andtile_bounding_box_offset_z[i] indicate the x, y, and z offsets of thei-th tile in cartesian coordinates.

tile_bounding_box_size_width[i], tile_bounding_box_size_height[i], andtile_bounding_box_size_depth[i] indicate the width, height, and depth ofthe i-th tile in the Cartesian coordinates.

Slice bounding boxes are now described. Although a bounding box is notexplicitly specified for slice, a box may be specified that includes thepoints in a slice. The specification of the slice bounding box includesa slice origin that specifies one corner of the slice bounding box andthe width, height and depth of the slice bounding box.

The Geometry parameter set (GPS) includes an indication of whether anexplicit slice origin is signaled for slices. If an explicit sliceorigin is present. G-PCC encoder 200 may signal an associated scalevalue at the GPS or at the Geometry slice header (GSH). When an explicitslice origin is not signaled, CG-PCC decoder 300 infers the slice originto be equal to (0, 0, 0). Slice bounding box syntax is shown below.

Slice (Bounding) Box-Related Syntax

Descriptor geometry_parameter_set( ) {  gps_geom_parameter_set_id ue(v) gps_seq_parameter_set_id ue(v)  gps_box_present_flag u(1)  if(gps_box_present_flag )   gps_gsh_box_log2_scale_present_flag u(1)   if(gps_gsh_box_log2_scale_present_flag = = 0 )    gps_gsh_box_log2_scaleue(v)  }  unique_geometry_points_flag u(1)

Descriptor geometry_slice_header( ) {   gsh_geometry_parameter_set_idue(v)   gsh_tile_id ue(v)   gsh_slice_id ue(v)   frame_idx u(n)  gsh_num_points u(24)   if( gps_box_present_flag ) {     if(gps_gsh_box_log2_scale_present_flag )      gsh_box_log2_scale ue(v)    gsh_box_origin_x ue(v)     gsh_box_origin_y ue(v)    gsh_box_origin_z ue(v)   }  if ( gps_implicit_geom_partition_flag ){    gsh_log2_max_nodesize_x ue(v)    gsh_log2_max_nodesize_y_minus_xse(v)    gsh_log2_max_nodesize_z_minus_y se(v)  } else {   gsh_log2_max_nodesize ue(v) _minus1 if( geom_scaling_enabled_flag ) {    [Ed: this should be last in the gsh?]

Slice (bounding) box-related semantics are now described. The followingare the semantics of the relevant syntax elements in the Geometryparameter set:

gps_geom_parameter_set_id provides an identifier for the GPS forreference by other syntax elements. The value ofgps_seq_parameter_set_id shall be in the range of 0 to 15, inclusive.

gps_seq_parameter_set_id specifies the value of sps_seq_parameter_set_idfor the active SPS. The value of gps_seq_parameter_set_id shall be inthe range of 0 to 15, inclusive.

gps_box_present_flag equal to 1 specifies an additional bounding boxinformation is provided in a geometry header that references the currentGPS. gps_bounding_box_present_flag equal to 0 specifies that additionalbounding box information is not signaled in the geometry header.

gps_gsh_box_log2_scale_present_flag equal to 1 specifiesgsh_box_log2_scale is signaled in each geometry slice header thatreferences the current GPS. gps_gsh_box_log2_scale_present_flag equal to0 specifies gsh_box_log2_scale is not signaled in each geometry sliceheader and common scale for all slices is signaled ingps_gsh_box_log2_scale of current GPS.

gps_gsh_box_log2_scale indicates the common scale factor of bounding boxorigin for all slices that references the current GPS.

The following are the semantics of the relevant syntax elements in theGeometry slice header:

gsh_geometry_parameter_set_id specifies the value of thegps_geom_parameter_set_id of the active GPS.

gsh_tile_id specifies the value of the tile id that is referred to bythe GSH. The value of gsh_tile_id shall be in the range of 0 to XX,inclusive.

gsh_slice_id identifies the slice header for reference by other syntaxelements. The value of gsh_slice_id shall be in the range of 0 to XX,inclusive.

frame_idx specifies the log2_max_frame_idx+1 least significant bits of anotional frame number counter. Consecutive slices with differing valuesof frame_idx form parts of different output point cloud frames.Consecutive slices with identical values of frame_idx without anintervening frame boundary marker data unit form parts of the sameoutput point cloud frame.

gsh_num_points specifies the maximum number of coded points in theslice. It is a requirement of bitstream conformance that gsh_num_pointsis greater than or equal to the number of decoded points in the slice.

gsh_box_log2_scale specifies the scaling factor of bounding box originfor the slice.

gsh_box_origin_x specifies the x value of bounding box origin thatscaled by gsh_box_log2_scale value.

gsh_box_origin_y specifies the y value of bounding box origin thatscaled by gsh_box_log2_scale value

gsh_box_origin_z specifies the z value of bounding box origin thatscaled by gsh_box_log2_scale value.

The variable slice_origin_x, slice_origin_y, and slice_origin_z arederived as follows:

-   -   If gps_gsh_box_log2_scale_present_flag is equal to 0,        -   originScale is set equal to gsh_box_log2_scale    -   Otherwise (gps_gsh_box_log2_scale_present_flag is equal to 1),        -   originScale is set equal to gps_gsh_box_log2_scale    -   If gps_box_present_flag is equal to 0,        -   the value of slice_origin_x and slice_origin_y and            slice_origin_z are inferred to be 0.    -   Otherwise (gps_box_present_flag is equal to 1), the following        applies:        -   slice_origin_x=gsh_box_origin_x<<originScale        -   slice_origin_y=gsh_box_origin_x<<originScale        -   slice_oigin_z=gsh_box_origin_x<originScale

gsh_log2_max_nodesize_x specifies the bounding box size in the xdimension, i.e., MaxNodesizeXLog2 that is used in the decoding processas follows.

-   -   MaxNodeSizeXLog2=gsh_log2_max_nodesize_x    -   MaxNodeSizeX=1<<MaxNodeSizeXLog2

gsh_log2_max_nodesize_y_minus_x specifies the bounding box size in the ydimension, i.e., MaxNodesizeYLog2 that is used in the decoding processas follows:

-   -   MaxNodeSizeYLog2=gsh_log2_max_nodesize_y_minus_x+MaxNodeSizeXLog2.    -   MaxNodeSizeY=1<<MaxNodeSizeYLog2.

gsh_log2_max_nodesize_z_minus_y specifies the bounding box sin in the zdimension, i.e., MaxNodesizeZLog2 that is used in the decoding processas follows.

-   -   MaxNodeSizeZLog2=gsh_log2_max_nodesize_z_minus_y+MaxNodeSireYLog2    -   MaxNodeSizeZ=1<<MaxNodeSizeZLog2.

If gps_implicit_geom_partition_flag equals to 1, gsh_log2_max_nodesizeis derived as follows.

-   -   gsh_log2_max_nodesize=max{MaxNodeSizeXLog2, MaxNodeSizeYLog2,        MaxNodeSizeZLog2}

gsh_log2_max_nodesize specifies the size of the root geometry octreenode when gps_implicit_geom_partition_flag is equal to 0. The variablesMaxNodeSize, and MaxGeometryOctreeDepth are derived as follows.

-   -   MaxNodeSize=<<gsh_log2_max_nodesize    -   MaxGeometryOctreeDepth=gsh_log2_max_nodesize−log2_trisoup_node_size

The variables K and M are then updated as follows.

 gsh_log2_min_nodesize = min{ MaxNodeSizeXLog2, MaxNodeSizeYLog2,MaxNodeSizeZLog2}  if (K > (gsh_log2_max_nodesize −gsh_log2_min_nodesize))   K = gsh_log2_max_nodesize −gsh_log2_min_nodesize;  if (M > gsh_log2_min_nodesize)   M =gsh_log2_min_nodesize;  if (gsh_log2_max_nodesize ==gsh_log2_min_nodesize)   M = 0;  if (log2_trisoup_node_size != 0) {   K= gsh_log2_max_nodesize − gsh_log2_min_nodesize;   M = 0;  }

Region boxes are now described. In addition to the bounding boxesspecified above, G-PCC also supports the signaling of a region box thatis used to indicate a modified QP value to the attributes of aparticular region of the point cloud. Typically, the QP value associatedwith an attribute may be specified in the attribute slice header (inaddition to some syntax elements in the attribute parameter set).However, certain regions of the point cloud may have peculiarcharacteristics that may be different from the rest of the slice. Forexample, a more dense region of the slice may be coded using a finerrepresentation (lower QP) or a more sparse region of the slice may becoded using a coarser representation (higher QP). The region box may beuseful for specifying a different QP for attributes of a certain regionof a slice. Region box-related syntax follows.

Region Box-Related Syntax

Descriptor attribute_slice_header( ) {  ash_attr_parameter_set_id ue(v) ash_attr_sps_attr_idx ue(v)  ash_attr_geom_slice_id ue(v)  if (aps_slice_qp_delta_present_flag ) {   ash_attr_qp_delta_luma se(v)   if(attribute_dimension_minus1[ ash_attr_sps_attr_idx ] > 0 )   ash_attr_qp_delta_chroma se(v)  } ash_attr_layer_qp_delta_present_flag u(1)  if (ash_attr_layer_qp_delta_present_flag ) {   ash_attr_num_layer_qp_minus1ue(v)   for( i = 0; i < NumLayerQp; i++ ){   ash_attr_layer_qp_delta_luma[i] se(v)    if(attribute_dimension_minus1[ ash_attr_sps_attr_idx ] > 0 ) ash_attr_layer_qp_delta_chroma[i] se(v)   }  } ash_attr_region_qp_delta_present_flag u(1)  if (ash_attr_region_qp_delta_present_flag ) {  ash_attr_qp_region_box_origin_x ue(v)  ash_attr_qp_region_box_origin_y ue(v)  ash_attr_qp_region_box_origin_z ue(v)   ash_attr_qp_region_box_widthue(v)   ash_attr_qp_region_box_height ue(v)  ash_attr_qp_region_box_depth ue(v)   ash_attr_region_qp_delta se(v)  } byte_alignment( ) }

Region box-related semantics follow:

ash_attr_parameter_set_id specifies the value of theaps_attr_parameter_set_id of the active APS.

ash_attr_sps_attr_idx specifies the order of attribute set in the activeSPS. The value of ash_attr_sps_attr_idx shall be in the range of 0 tosps_num_attribute_sets in the active SPS.

ash_attr_geom_slice_id specifies the value of the gsh_slice_id of theactive Geometry Slice Header.

ash_attr_layer_qp_delta_present_flag equal to 1 specifies that theash_attr_layer_qp_delta_luma and ash_attr_layer_qp_delta_chroma syntaxelements are present in current ASH.ash_attr_layer_qp_delta_present_flag equal to 0 specifies that theash_attr_layer_qp_delta_luma and ash_attr_layer_qp_delta_chroma syntaxelements are not present in current ASH.

ash_attr_nam_layer_qp_minus1 plus 1 specifies the number of layer inwhich ash_attr_qp_delta_luma and ash_attr_qp_delta_chroma are signaled.When ash_attr_num_layer_qp is not signaled, the value ofash_attr_num_layer_qp is inferred to be 0. The value of NumLayerQp isderived as follows:

-   -   NumLayerQp=num_layer_qp_minus1+1

ash_attr_qp_delta_luma specifies the luma delta qp from the initialslice qp in the active attribute parameter set. Whenash_attr_qp_delta_luma is not signaled, the value ofash_attr_qp_delta_luma is inferred to be 0.

ash_attr_qp_delta_chroma specifies the chroma delta qp from the initialslice qp in the active attribute parameter set. Whenash_attr_qp_delta_chroma is not signaled, the value ofash_attr_qp_delta_chroma is inferred to be 0.

The variables InitialSliceQpY and InitialSliceQpC are derived asfollows:

-   -   InitialSliceQpY=aps_attrattr_initial_qp+ash_attr_qp_delta_luma    -   InitialSliceQpC=aps_attrattr_initial_qp+aps_attr_chroma_qp_offset+ash_attr_qp_delta_chroma

ash_attr_layer_qp_delta_luma specifies the luma delta qp from theInitialSliceQpY in each layer. When ash_attr_layer_qp_delta_luma is notsignaled, the value of ash_attr_layer_qp_delta_luma of all layers areinferred to be 0.

ash_attr_layer_qp_delta_chroma specifies the chroma delta qp from theInitialSliceQpC in each layer. When ash_attr_layer_qp_delta_chroma isnot signaled, the value of ash_attr_layer_qp_delta_chroma of all layersare inferred to be 0.

The variables SliceQpY[i] and SliceQpC[i] with i=0 . . .NumLayerQPNumQPLayer−1 are derived as follows:

for ( i = 0; i < NumLayerQPNumQPLayer; i++) {  SliceQpY[ i ] =InitialSliceQpY + ash_attr_layer_qp_delta_luma[ i ]  SliceQpC[ i ] =InitialSliceQpC+ ash_attr_layer_qp_delta_chroma[ i ] }

ash_attr_region_qp_delta_present_flag equal to 1 indicates theash_attr_region_qp_delta and region bounding box origin and size arepresent in current ASH. ash_attr_region_qp_delta_present_flag equal to 0indicates the ash_attr_region_qp_delta and region bounding box originand size are not present in current ASH.

ash_attr_qp_region_box_origin_x indicates the x offset of the regionbounding box relative to slice_origin_x. When not present, the value ofash_attr_qp_region_box_origin_x is inferred to be 0.

ash_attr_qp_region_box_origin_y indicates the y offset of the regionbounding box relative to slice_origin_y. When not present, the value ofash_attr_qp_region_box_origin_y is inferred to be 0.

ash_attr_qp_region_box_origin_z indicates the z offset of the regionbounding box relative to slice_orgin_z. When not present, the value ofash_attr_qp_region_box_origin_z is inferred to be 0.

The variable RegionboxX, RegionboxY and RegionboxZ specifying the regionbox origin are set equal to ash_attr_qp_region_box_origin_x,ash_attr_qp_region_box_origin_y and ash_attr_qp_region_box_origin_zrespectively.

ash_attr_qp_region_box_size_width indicates the width of the regionbounding box. When not present, the value ofash_attr_qp_region_box_size_width is inferred to be 0.

ash_attr_qp_region_box_size_height indicates the height of the regionbounding box. When not present, the value ofash_attr_qp_region_box_size_height is inferred to be 0.

ash_attr_qp_region_box_size_depth indicates the depth of the regionbounding box. When not present, the value ofash_attr_qp_region_box_size_depth is inferred to be 0.

The variable RegionboxWidth, RegionboxHeight and RegionboxDepthspecifying the region box size are set equal toash_attr_qp_region_box_size_width, ash_attr_qp_region_box_size_heightand ash_attr_qp_region_box_size_depth respectively.

ash_attr_region_qp_delta specifies the delta qp from the SliceQpY[i] andSliceQpC[i] (with i=0 . . . NumLayerQPNumQPLayer−1) of the regionspecified by ash_attr_qp_region_box. When not present, the value ofash_attr_region_qp_delta is inferred to be 0.

The variable RegionboxDeltaQp specifying the region box deltaquantization parameter is set equal to ash_attr_region_qp_delta.

Attribute specific parameter signaling in a sequency parameter set (SPS)is now described. G-PCC encoder 200 may signal the number of attributesassociated with the point cloud in an SPS, with a syntax element namedsps_num_attribute_sets. For each attribute, G-PCC encoder 200 may signalin the SPS a few attribute specific parameters, such as bit-depth,secondary bit-depth, attribute dimension, attribute type (color,reflectance, frameIndex etc.) and color space related information. Thecorresponding syntax and semantics are shown below.

sps_num_attribute_sets ue(v) for( i = 0; i< sps_num_attribute_sets; i++) {  attribute_dimension_minus1[ i ] ue(v)  attribute_instance_id[ i ]ue(v) attribute_bitdepth_minus1[i] ue(v)  if(attribute_dimension_minus1[i ] > 0 )   attribute_secondary_bitdepth_minus1[ i ] ue(v) attribute_cicp_colour_primaries[ i ] ue(v) attribute_cicp_transfer_characteristics[ i ] ue(v) attribute_ciep_matrix_coeffs[ i ] ue(v)  attribute_ciep_video_fullrange_flag[ i ] u(1)  known_attribute_label_flag[ i ] u(1)  if(known_attribute_label_flag[ i ] )    known_attribute_label[ i ] ue(v) else    attribute_label_four_bytes[ i ] u(32) }

attribute_dimension_minus1[i] plus 1 specifies the number of componentsof the i-th attribute.

attribute_instance_id[i] specifies the instance id for the i-thattribute.

-   -   NOTE—The value of the attribute_instance_id identifies the        attribute when two or more attribute having the attribute label        four bytes value is in the bitstream. For example, it is useful        for the point cloud having multiple color from the different        view point.

attribute_bitdepth_minus1[i] plus 1 specifies the bitdepth for firstcomponent of the i-th attribute signal(s).

attribute_secondary_bitdepth_minus1[i] plus 1 specifies the bitdepth forsecondary component of the i-th attribute signal(s).

attribute_cicp_colour_primaries[i] indicates the chromaticitycoordinates of the colour attribute source primaries of the i-thattribute. The semantics are as specified for the code pointColourPrimaries in ISO/IEC 23091-2.

attribute_cicp_transfer_characteristics[i] (either indicates thereference opto-electronic transfer characteristic function of the colourattribute as a function of a source input linear optical intensity L,with a nominal real-valued range of 0 to 1 or indicates the inverse ofthe reference electro-optical transfer characteristic function as afunction of an output linear optical intensity L with a nominalreal-valued range of 0 to 1. The semantics are as specified for the codepoint TransferCharacteristics in ISO/AEC 23091-2.

attribute_cicp_matrix_coeffs[i] describes the matrix coefficients usedin deriving luma and chroma signals from the green, blue, and red, or Y,Z, and X primaries. The semantics are as specified for the code pointMatrixCoefficients in ISO/IEC 23091-2.

attribute_cicp_video_full_range_flag[i] specifies indicates the blacklevel and range of the luma and chroma signals as derived from E′Y,E′PB, and E′PR or E′R, E′G, and E′B real-valued component signals. Thesemantics are as specified for the code point VideoFullRangeFlag inISO/IEC 23091-2.

known_attribute_label_flag[i] equal to 1 specifies know_attribute_labelis signaled for the i-th attribute. known_attribute_label_flag[i] equalto 0 specifies attribute label four bytes is signaled for the i-thattribute.

known_attribute_label[i] equal to 0 specifies the attribute is colour.known_attribute_label[i] equal to 1 specifies the attribute isreflectance. known_attribute_label[i] equal to 2 specifies the attributeis frame index.

attribute_label_four_bytes[i] indicates the known attribute type withthe 4 bytes code. 7.1 describes the list of supported attributes andtheir relationship with attribute_label_four_bytes[i].

TABLE 7.1 attribute_label_four_bytes attribute_label_four_bytes[ i ]Attribute type 0 Color 1 Reflectance 2 Frame index 3 Material ID 4Transparency 5 Normals  6 . . . 255 Reserved 256 . . . 0xffffffffunspecified

The attribute parameter set (APS) is now described. G-PCC syntax allowssignaling of a separate parameter set for each attribute. For example,if one point cloud has two different attributes associated with thepoint cloud, for example color and reflectance, each attribute may havetheir own APS. An APS contains information about attribute quantizationparameters (initial qp, qp offsets etc.), level of detail (LoD)generation-specific parameters, and/or coding tools for attributecoding.

The level of detail (LoD) structure partitions the point cloud intonon-overlapping subsets of points referred to as refinement levels(R_(l))_(l=0 . . . L-1), according to a set of Euclidian distances(d_(l))_(l=0 . . . L-1) specified by the user, in a way, that the entirepoint cloud is represented by the union of all the refinement levels.The level of detail (LoD) l, LoD_(l), is obtained by taking the union ofthe refinement levels R₀, R₁, . . . , R_(l):

-   -   LOD₀=R₀    -   LOD₁=LOD₀∪R₁ . . .    -   LOD_(j)=LOD_(j-1)∪R_(j) . . .    -   LOD_(l+1)=LOD_(l)∪R_(l) represents the entire point cloud.

FIG. 4 is a conceptual diagram illustrating an example Level of Details(LoD) generation process. Original order 400 of the points in the pointcloud is depicted in FIG. 4 . With LoD, the order of the points maychange as shown in LoD-based order 402. For example, LoD₀ includes P0,P5, P4, and P2. LoD₁ includes P0, P5, P4, P2, P1, P6, and P3, LOD₂includes P0, P5, P4, P2, P1, P6, P3, P9, P8, and P7, which is the entirepoint cloud of the example of FIG. 4 .

Thus, LoD generation provides a scalable representation for theattribute information of a point cloud, where increasing the LoD levelresults in a progressive increase of the details of attributeinformation. Additionally, G-PCC decoder 300 performs attribute decodingin LoD order, e.g., first all the points in LoD₀ (R0) are decoded, thenthe points corresponding to refinement level R_(i) are decoded in orderto generate LoD₁, and this process may continue further to progressivelygenerate all the LoD. For this reason, a point in an LoD layer can bepredicted either from the points in previous LoD layer(s) or, ifapplicable, from the already decoded points in the same refinement level(e.g., EnableReferringSameLoD=1) as shown in FIG. 5 .

FIG. 5 is a conceptual diagram illustrating possible point predictionusing LoD. Original order 500 of the points in the point cloud isdepicted. Additionally, LoD-based order 502 is depicted. With LoD, pointP4 may be used to predict point P6, as point P4 is in LoD₀ which isdecoded prior to point P6 which is in LoD₁. If EnableReferringSameLoD=1,then point P1 may be used to predict point P6, as point P1 is decodedbefore point P6. However, if EnableReferringSameLoD=0, then point P1 maynot be used to predict point P6.

By using LoD generation, such as with spatial scalability, it may bepossible to access a lower resolution point cloud as a thumbnail withless decoder complexity and/or using less bandwidth. When spatialscalability is needed, it may be desirable to decode lower geometry andthe corresponding attribute bitstream in a harmonized fashion.

FIG. 6 is a conceptual diagram depicting G-PCC decoding with differentLoDs. For example, to generate full resolution point cloud 642, G-PCCdecoder 300 may utilize a high LoD (e.g., LoD 606 and LoD 608) in bothgeometry bitstream 620 and the attribute bitstream 622. To generate lowresolution point cloud 632, G-PCC decoder 30) may utilize a lower LoD(e.g., LoD 602 and LoD 604) in partial octree bitstream 610 and partiallifting bitstream 612.

To achieve the harmonized spatial scalability, the attribute decoder(e.g., attribute arithmetic decoding unit 304 of FIG. 3 ) may beextended to decode the lower resolution geometry point cloud (e.g., lowresolution point cloud 632) from the partially decoded octree bitstream(e.g., partial octree bitstream 610), where the decoded position of apoint in the lower resolution geometry point cloud is quantized asINT(pos/2 k)*2 k.

One or more examples disclosed in this document may be appliedindependently or combined.

Constraints on region box dimensions are now described. The semantics ofthe region box in the draft G-PCC standard allow the region box toexceed the dimensions of the slice that contains the region. G-PCCencoder 200, when signaling the region width, height and depth, may useexponential Golomb coding. G-PCC encoder 200 signaling values for thesesyntax elements that exceed the slice dimensions may not provide anybenefit to G-PCC decoder 300 because there are no points that belong tothe slice that are outside the slice bounding box. Furthermore, theshape of a slice bounding box is a regular cuboid/cube, and thereforethere may be no benefit in G-PCC encoder 200 signaling a region that islarger than the slice bounding box. This also applies to the origin ofthe region box as the origin of the region box should also be containedwithin the slice.

Moreover, the signaling of region box dimensions allows the signaling ofwidth, height, or depth to be equal to 0. However, if any of theseelements are signaled as zero, the G-PCC draft standard considers theregion to be empty.

According to the techniques of this disclosure, constraints may be addedsuch that the region box does not exceed the slice dimensions, or morespecifically, the slice bounding box dimensions. For example, G-PCCdecoder 300 may determine dimensions of a region box. G-PCC decoder 300may determine dimensions of a slice bounding box. G-PCC decoder 300 maydecode a slice of the point cloud data associated with the slicebounding box. The dimensions of the region box may be constrained to notexceed the dimensions of the slice bounding box.

In some examples, constraints are added such that the origin region boxis contained within the slice. In other examples, constraints are addedsuch that no point in the region box is outside the slice, orspecifically, outside the slice bounding box.

In some examples, the signaling of the region box width, height anddepth are modified such that a value of 0 is disallowed for any of theseregion box attributes. In other words, G-PCC encoder 200 may not signala value of 0 for region box width, height or depth.

In an example, the semantics of the syntax elements of the region boxare updated so that the region box origin or the region box does notexceed the slice dimensions. The beginning of changes from the draftG-PCC standard ISO/IEC JTC 1/SC 29/WG 11 N18887, are marked <CHANGE> andthe end of changes are marked </CHANGE>. The beginning of deletions fromthe draft G-PCC standard are marked <DELETE> and the end of deletionsare marked </DELETE>.

ash_attr_region_qp_delta_present_flag equal to 1 indicates theash_attr_region_qp_delta and region bounding box origin and size arepresent in current ASH. ash_attr_region_qp_delta_present_flag equal to 0indicates the ash_attr_region_qp_delta and region bounding box originand size are not present in current ASH.

ash_attr_qp_region_box_origin_x indicates the x offset of the regionbounding box relative to slice_origin_x. When not present, the value ofash_attr_qp_region_box_origin_x is inferred to be 0.

ash_attr_qp_region_box_origin_y indicates the y offset of the regionbounding box relative to slice_origin_y. When not present, the value ofash_attr_qp_region_box_origin_y is inferred to be 0.

ash_attr_qp_region_box_origin_z indicates the z offset of the regionbounding box relative to slice_origin_z. When not present, the value ofash_attr_qp_region_box_origin_z is inferred to be 0.

The variable RegionboxX, RegionboxY and RegionboxZ specifying the regionbox origin are set equal to ash_attr_qp_region_box_origin_x,ash_attr_qp_region_box_origin_y and ash_attr_qp_region_box_origin_zrespectively.

ash_attr_qp_regio_box_size_width<CHANGE>_minus1 plus 1 </CHANGE>indicates the width of the region bounding box. When not present, thevalue of ash_attr_qp_region_box_size_width<CHANGE>_minus1 </CHANGE> isinferred to be <CHANGE>−1</CHANGE><DELETE>0</DELETE>.

ash_attr_qp_region_box_size_height<CHANGE>_minus1 plus 1</CHANGE>indicates the height of the region bounding box. When not present, thevalue of ash_attr_qp_region_box_size_height<CHANGE>_minus1 </CHANGE> isinferred to be <CHANGE>−1</CHANGE><DELETE>0)</DELETE>.

ash_attr_qp_region_box_size_depth<CHANGE>_minus1 plus 1</CHANGE>indicates the depth of the region bounding box. When not present, thevalue of ash_attr_qp_region_box_size_depth<CHANGE>_minus1 </CHANGE> isinferred to be <CHANGE>−1</CHANGE><DELETE>0</DELETE>.

The variable RegionboxWidth, RegionboxHeight and RegionboxDepthspecifying the region box size are set equal toash_attr_qp_region_box_size_width, ash_attr_qp_region_box_size_heightand ash_attr_qp_region_box_size_depth respectively.

<CHANGE> It is a requirement of bitstream conformance that all thefollowing conditions apply:

-   -   If gps_implicit_geom_partition_flag is equal to 1, the value of        (RegionboxX+RegionboxWidth), (RegionboxY+RegionboxHeight) and        (RegionBoxZ+RegionboxDepth) shall not exceed MaxNodeSizeX,        MaxNodeSizeY and MaxNodeSizeZ, respectively, of the slice.    -   Otherwise (gps_implicit_geom_partition_flag is equal to 0), the        value of each of (RegionboxX+RegionboxWidth),        (RegionboxY+RegionboxHeight) and (RegionBoxZ+RegionboxDepth)        shall not exceed MaxNodeSize. </CHANGE>

ash_attr_region_qp_delta specifies the delta qp from the SliceQpY[i] andSliceQpC[i] (with i=0 . . . NumLayerQPNumQPLayer−1) of the regionspecified by ash_attr_qp_region_box. When not present, the value ofash_attr_region_qp_delta is inferred to be 0.

The variable RegionboxDeltaQp specifying the region box deltaquantization parameter is set equal to ash_attr_region_qp_delta.

In one example, the following constraints may also be added: It is arequirement of bitstream conformance that all the following conditionsapply:

If gps_implicit_geom_partition_flag is equal to 1, the value ofRegionboxX, RegionboxY and RegionBoxZ shall not exceed MaxNodeSizeX,MaxNodeSizeY and MaxNodeSizeZ, respectively, of the slice.

Otherwise (gps_implicit_geom_partition_flag is equal to 0), the value ofeach of RegionboxX. RegionboxY and RegionBoxZ shall not exceedMaxNodeSize.

The presence of tile_inventory( ) syntax and validity of tile_id is nowdescribed. The geometry slice header includes a syntax element tile_idthat refers to an identifier of the tile associated with the slice. Thetile information is provided in the tile_inventory( ), which includes asyntax element frame_idx. The frame_idx may be used to associate thetile_inventory( ) with a particular frame that has the same frame_idx.However, there is no guarantee that a tile_inventory( ) may be presentfor a particular frame. Moreover, when G-PCC encoder 200 signals theframe_idx with a fixed bit depth, more than one frame may be associatedwith the same frame_idx. The association of the tile_inventory( ) to aparticular frame is unclear. Moreover, when a slice refers a tile_id,the value of the tile_id should belong to a valid range.

According to the techniques of this disclosure, a constraint may beadded that specifies that a tile_inventory( ) syntax must be associatedwith each frame. For example, G-PCC encoder 200 may associate atile-inventory syntax with each frame. In one example, a constraint isadded that tile_inventory( ) syntax be signaled. e.g., by G-PCC encoder200, with each point cloud frame. In another example, a derivation isadded such that each frame with a frame index is associated with atile_inventory( ) with an equivalent frame index value. For example,G-PCC decoder 300 may derive an association between each frame with aframe index and a tile_inventory( ) with an equivalent frame indexvalue.

In some examples, a constraint is added such that the value range oftile_id in the geometry slice header be in the range of 0 to N,inclusive, where a value of N is one less than the number of tilessignaled in the tile-inventory( ) syntax associated with the frame.

In some examples, a constraint is added such that when thetile_inventory( ) syntax is not signaled/associated for a frame, thevalue of gsh_tile_id is equal to 0 for all the slices of the frame. Forexample, G-PCC decoder 300 may set the value of gsh_tile_id to be equalto 0 for all the slices of the frame (e.g., when tile_inventory( )syntax is not signaled/associated for a frame).

Alternatively, when tile_inventory( ) is not signaled/associated for aframe, the gsh_tile_id may be specified to be ignored, or the bitstreamsmay be specified to be non-conforming/ignored by the decoders, e.g.G-PCC decoder 300.

In one example, the tile_id is not included in the slice header syntax.

In one example, the tile_inventory( ) associated with a frame mayinclude one or more slice IDs that are associated with each tile. Forexample, for each tile specified in the tile inventory, a list of sliceIDs may be signaled that specifies the slices associated with the tile.

In an example, the following changes are made to the tile inventorysemantics. In some examples, the constraint may be added in other partof the codec as well. The beginning of changes from the draft G-PCCstandard are marked <CHANGE> and the end of changes are marked</CHANGE>.

num_tiles_minus1 plus 1 specifies the number of tile bounding boxespresent in the tile inventory.

tile_bounding_box_offset_x[i], tile_bounding_box_offset_y[i], andtile_bounding_box_offset_z[i] indicate the x, y, and z offsets of thei-th tile in cartesian coordinates.

tile_bounding_box_size_width[i], tile_bounding_box_size_height[i], andtile_bounding_box_size_depth[i] indicate the width, height, and depth ofthe i-th tile in the Cartesian coordinates.

<CHANGE> It is a requirement of bitstream conformance that atile_inventory( ) syntax is present for each frame in the point cloud.</CHANGE>

Alternately, the following constraint may be added: It is a requirementof bitstream conformance that a tile_inventory( ) syntax is associatedwith each frame in the point cloud; the associated frame also has anassociated frame index frame_idx.

The following changes may be made to the geometry slice headersemantics. The beginning of changes from the draft G-PCC standard aremarked <CHANGE> and the end of changes are marked </CHANGE>.

gsh_tile_id specifies the value of the tile id that is referred to bythe GSH. The value of gsh_tile_id shall be in the range of 0 to <CHANGE>num_tiles_minus1 </CHANGE>, inclusive.

Multiple geometry slices within a tile are now described. Each tile maybe coded in one or more slices. The slice bounding box is specifiedusing the slice origin and the slice box dimensions. However, thesignaling, e.g., by G-PCC encoder 200, of slice origin is conditioned onthe value of the syntax element gps_box_present_flag. Whengps_box_present_flag is equal to 0, the slice origin is inferred, byG-PCC decoder 300, to be equal to (0, 0, 0). When more than one geometryslice is present in a tile, setting gps_box_present_flag equal to 0would result in multiple slices having the same origin which may not bedesirable.

According to the techniques of this disclosure, in some examples, aconstraint may be added such that when multiple slices are present in atile associated with a frame, G-PCC encoder 200 may signal one or moresyntax elements associated with slice origin and G-PCC decoder 300 mayparse the one or more syntax elements. This constraint may be anexplicit signaling constraint or indirect bitstream conformanceconstraint.

In another example, G-PCC encoder 200 may signal slice origin withrespect to a normative bounding box that may be specified for the pointcloud and G-PCC decoder 300 may parse the slice origin. The normativebounding box may be a box that is specified to contain all thereconstructed points in the point cloud. In some examples, the normativebounding box is the smallest such box that contains all thereconstructed points of the point cloud frame. In some examples, thenormative bounding box is specified in the bitstream (e.g., signaled) orderived from other syntax elements, for example by G-PCC decoder 300.

For example, the normative bounding box may be specified by one or moreof a bounding box origin and bounding box dimensions (width, height,depth).

In an example, the following constraint may be added to the semantics:

When any two geometry slices with different values of gsh_slice_id arepresent for a particular tile of a point cloud frame, it is arequirement of bitstream conformance that the value ofgps_box_present_flag shall be equal to 1.

Alternatively, the following constraint may be added to the semantics:

When two geometry slices with different values of gsh_slice_id arepresent such that the tile ID and the frame index are the same for thetwo slices, it is a requirement of bitstream conformance that the valueof gps_box_present_flag shall be equal to 1 for the GPS that is referredto by the two slices.

Alternatively, gps_box_present_flag is constrained to be 1 when twodifferent geometry slices are present in a frame.

For example, the following constraint may be added to the semantics:When any two geometry slices with different values of gsh_slice_id arepresent for a point cloud frame, it is a requirement of bitstreamconformance that the value of gps_box_present_flag shall be equal to 1.

Trisoup node size range is now described. When trisoup coding is used tocode the positions in the point cloud, G-PCC encoder 200 uses the syntaxelement log2_trisoup_node_size to specify the size of the nodes that arecoded with trisoup coding mode to G-PCC decoder 30). G-PCC encoder 20may signal this syntax element in the GPS and G-PCC decoder 300 mayparse this syntax element. The semantics are as follows:

log2_trisoup_node_size specifies the variable TrisoupNodeSize as thesize of the triangle nodes as follows.

-   -   TrisoupNodeSize=1<<log2_trisoup_node_size

When log2_trisoup_node_size is equal to 0, the geometry bitstreamincludes only the octree coding syntax. When log2_trisoup_node_size isgreater than 0, it is a requirement of bitstream conformance that:

-   -   inferred_direct_coding_mode_enabled_flag must be equal to 0, and    -   unique_geometry_points_flag must be equal to 1.

This syntax element may also be used to determine the maximum octreecoding depth, because when trisoup coding is used, the slice is decodedusing QTBT or octree up to a particular node size and subsequently usingtrisoup coding. This is described in the semantics as follows:

gsh_log2_max_nodesize_x specifies the bounding box size in the xdimension. i.e., MaxNodesizeXLog2 that is used in the decoding processas follows.

-   -   MaxNodeSizeXLog2=gsh_log2_max_nodesize_x    -   MaxNodeSizeX=1<<MaxNodeSizeXLog2

gsh_log2_max_nodesize_y_minus_x specifies the bounding box size in the ydimension, i.e., MaxNodesizeYLog2 that is used in the decoding processas follows:

-   -   MaxNodeSizeYLog2=gsh_log2_max_nodesize_y_minus_x+MaxNodeSizeXLog2.    -   MaxNodeSizeY=1<<MaxNodeSizeYLog2.

gsh_log2_max_nodesize_z_minus_y specifies the bounding box size in the zdimension, i.e., MaxNodesizeZLog2 that is used in the decoding processas follows.

-   -   MaxNodeSizeZLog2=gsh_log2_max_nodesize_z_minus_y+MaxNodeSizeYLog2    -   MaxNodeSizeZ=1<<MaxNodeSizeZLog2

If gps_implicit_geom_partition_flag equals to 1, gsh_log2_max_nodesizeis derived as follows.

-   -   gsh_log2_max_nodesize=max{MaxNodeSizeXLog2, MaxNodeSizeYLog2,        MaxNodeSizeZLog2}

gsh_log2_max_nodesize specifies the size of the root geometry octreenode when gps_implicit_geom_partition_flag is equal to 0. The variablesMaxNodeSize, and MaxGeometryOctreeDepth are derived as follows.

-   -   MaxNodeSize==1 gsh_log2_max_nodesize    -   MaxGeometryOctreeDepth=gsh_log2_max_nodesize−log2_trisoup_node_size

The variables K and M are then updated as follows.

 gsh_log2_min_nodesize = min{ MaxNodeSizeXLog2, MaxNodeSizeYLog2,MaxNodeSizeZLog2}  if (K > (gsh_ log2_max_nodesize −gsh_log2_min_nodesize))   K = gsh_log2_max_nodesize −gsh_log2_min_nodesize;  if (M > gsh_log2_min_nodesize)   M =gsh_log2_min_nodesize;  if (gsh_log2_max_nodesize ==gsh_log2_min_nodesize)   M = 0;  if (log2_trisoup_node_size != 0) {  K=gsh_log2_max_nodesize − gsh_log2_min_nodesize;   M = 0;  }

In the draft G-PCC standard, there is no restriction on the range oflog2_trisoup_node_size. When the value of log2_trisoup_node_size exceedsthe slice dimensions, G-PCC decoder 30 may derive negative values ofMaxGeometryOctreeDepth, which may be undesirable. Signaling a value oflog2_trisoup_node_size that is larger than the slice dimension is alsoinefficient.

According to the techniques of this disclosure, in some examples, aconstraint may be added such that the value of log2_trisoup_node_size isrestricted to not exceed slice dimensions. In an example, the followingconstraint is added in the geometry slice header semantics: It is arequirement of bitstream conformance that the value ofgsh_log2_max_nodesize shall be greater than or equal to value oflog2_trisoup_node_size. Alternatively, the following constraint may beadded in the geometry slice header semantics: It is a requirement ofbitstream conformance that the value of log2_trisoup_node_size shall beless than or equal to min (gsh_log2_max_nodesize_x,gsh_log2_max_nodesize_y, gsh_log2_max_nodesize_z) whengps_implicit_geom_partition_flag is equal to 1, and shall be greaterthan or equal to gsh_log2_max_nodesize otherwise.

The uniqueness of geometry slice ID is now described. A point cloudframe may be associated with more than one slice, and each slice may beassociated with a geometry slice (that contains a geometry sliceheader). A geometry slice has an identifier, gsh_slice_id. When G-PCCencoder 200 signals attribute slices, the slices contain the ID of thegeometry slice associated with the attribute slice. This syntax elementash_attr_geom_slice_id is signaled in the attribute slice header.

Currently, there is no restriction on the slice ID that may be assignedto a geometry slice. If more than one geometry slice has the same valueof gsh_slice_id, then there may be an ambiguity when an attribute slicerefers to a geometry slice with that particular value of slice ID. Thisbehavior may be undesirable and may cause issues (e.g., decoding errors)when G-PCC decoder 300 attempts to decode the point cloud data.

According to the techniques of this disclosure, in some examples, aconstraint may be added such that when two geometry slices associatedwith a frame have the same slice ID, the content of the geometry slicesshall be the same. This constraint allows the repetition of sliceswithin a frame. Alternatively, a constraint may be added such that notwo geometry slices associated with a frame have the same value of sliceID. In an example, the following constraint may be added in the geometryslice header semantics: It is a requirement of bitstream conformancethat for any two geometry slices that are associated with a frame andthat have the same value of gsh_slice_id, the content of the twogeometry slices shall be the same. This constraint may also be writtenas follows: When any geometry slices of a frame have the same value ofgsh_slice_id, the content of the two geometry slices shall be the same.

For example, G-PCC decoder 300 may determine a first slice identifier(ID) of a first geometry slice associated with a frame of the pointcloud data. G-PCC decoder 300 may determine a second slice ID of asecond geometry slice associated with the frame of the point cloud data.Based on the second slice ID being equal to the first slice ID, G-PCCdecoder 300 may determine the second slice to contain identical contentto the first slice. G-PCC decoder 300 may decode the point cloud databased on the first slice ID.

In another example, the following constraint may be added: It is arequirement of bitstream conformance that no two geometry slices thatare associated with a frame shall have the same value of gsh_slice_id.In some examples, the slice ID may be defined as a combination, or afunction, of both the gsh_slice_id and tile_id. For example, one of theabove constraints may be modified as follows: It is a requirement ofbitstream conformance that when any two geometry slices are associatedwith a frame, and have the same value of gsh_slice_id, and have the samevalue of gsh_tile_id, the content of the two geometry slices shall bethe same.

Unique positions for points are now described. In G-PCC, a voxel(associated with a unique position) in a point cloud may be associatedwith one or more points. In some applications, it may be desirable torestrict voxels to contain only one point or indicate whether voxelscontain only one point. When a source point cloud may have more than onepoint associated with a voxel (or a position), the points in the voxelsmay be combined (by averaging or other means, and attributes recolouredor recomputed for the single point) to generate one point for the voxel.The G-PCC bitstream then may indicate that the voxel has only one point.There are two syntax elements in G-PCC that are associated with thisindication.

-   -   1) Syntax element unique_point_positions_constraint_flag in the        SPS specifies whether each position in the point cloud has a        non-unique point (i.e., two or more points). The semantics of        this syntax element is as follows:        -   unique_point_positions_constraint_flag equal to 1 indicates            that in each point cloud frame that refers to the current            SPS, all output points have unique positions.            unique_point_positions_constraint_flag equal to 0 indicates            that in any point cloud frame that refers to the current            SPS, two or more output points may have the same position.    -   2) Syntax element unique_geometry_points_flag in the GPS        specifies whether any voxel in a slice has a non-unique point.        The semantics of this syntax element is as follows:        -   unique_geometry_points_flag equal to 1 indicates that in all            slices that refer to the current GPS, all output points have            unique positions within a slice. unique_geometry_points_flag            equal to 0 indicates that in all slices that refer to the            current GPS, two or more of the output points may have same            positions within a slice

When unique_point_positions_constraint_flag is equal to 1, all thepoints in the point cloud are associated with a unique point. However,G-PCC encoder 200 is allowed to signal in the bitstreamunique_geometry_points_flag equal to 0 (which indicates two or moreoutput points may be associated with the same position) even in suchcases—which contradicts the signaling ofunique_point_positions_constraint_flag. This could result in bitstreamnon-conformance or non-conformant behavior by the decoder, e.g., G-PCCdecoder 300.

According to the techniques of this disclosure, in some examples, aconstraint may be added such that when all points in the point cloud areindicated to be associated with a unique point, e.g., slices do notcontain two points associated with the same position. In such cases,signaling or otherwise providing an indication that specifies thatslices may contain two points associated with the same position may alsobe prohibited. In some examples, when it is specified that the positionof the points in the point cloud are unique, one or morequantization/scaling methods may be disabled and G-PCC encoder 20 maynot signal associated syntax elements.

In an example, the following constraint may be added to the semantics ofthe GPS: It is a requirement of bitstream conformance that whenunique_points_positions_constraint_flag is equal to 1, the value ofunique_geometry_points_flag shall not be equal to 0. In one example, theconstraint may be phrased as follows: It is a requirement of bitstreamconformance that when unique_geometry_points_flag (in the associatedGPS) is equal to 0 for any slice, the value ofunique_points_positions_constraint_flag (in the associated SPS) shallnot be equal to 1.

Conditions on attribute specific parameter signaling in an SPS are nowdescribed. Firstly, G-PCC encoder 200 may signal four different syntaxparameters: attribute_cicp_colour_primaries[i],attribute_cicp_transfer_characteristics[i],attribute_cicp_matrix_coeffs[i], and attribute_cicp_video_full_range[i],for each attribute, although they are only applicable to colorattribute.

Secondly, as per the semantics of known_attribute_label_flag,known_attribute_label and attribute_label_four_byte, G-PCC encoder 200may signal some attributes, in multiple ways. For example, a colorattribute can be indicated by using either:

-   -   a. Known_attribute_label_flag[i]=1, known_attribute_label[i]=0        (ue(v)), or    -   b. Known_attribute_label_flag[i]=0,        attribute_label_four_bytes[i]=0 (u(32))

Similarly, multiple ways of signaling apply to reflectance andframeIndex attributes as well. These multiple ways of signaling may leadto redundant signaling, which is inefficient.

According to the techniques of this disclosure, in some examples, G-PCCencoder 200 signals four different color related syntax elements(Cluster Iterative Closest Point (CICP) parameters) only for colorattributes. G-PCC decoder 300 may parse these syntax elements. Colorattributes, may include one or more of the following: RGB, YCbCr, YCoCg,ICtCp, or any other color space representation. The signaling of thesesyntax elements may be conditioned on one or more values of theattribute label/type (e.g., RGB YCbCr, etc.).

In another example, G-PCC encoder 200 signals a syntax element tospecify whether one or more of the CICP parameters are signaled for anattribute. G-PCC decoder 3) may parse this syntax element. When CICPparameters are not signaled they may be inferred to be a default valuethat is pre-determined. For example, when CICP parameters are notsignaled, G-PCC decoder 300 may infer the CICP parameters to be adefault value.

To remove the redundancy either of two alternative approaches may beused:

-   -   1. When known_attribute_label_flag is zero, the        attribute_label_four_bytes should not contain the known        attributes, such as color, reflectance and frame index.    -   2. Remove known_attribute_label_flag and known_attribute_label        syntax elements, so that each attribute is only represented        using attribute_label_four_bytes.

The beginning of changes from the draft G-PCC standard are marked<CHANGE> and the end of changes are marked </CHANGE>.

sps_num_attribute_sets ue(v) for( i = 0; i< sps_num_attribute_sets; i++) {  attribute_dimension_minus1[ i ] ue(v)  attribute_instance_id[ i ]ue(v) attribute_bitdepth_minus1[i] ue(v)  if(attribute_dimension_minus1[i ] > 0 )   attribute_secondary_bitdepth_minus1[ i ] ue(v) <CHANGE>attribute_cicp_colour_primaries[ i ] ue(v) attribute_cicp_transfer_characteristics[ i ] ue(v) attribute_cicp_matrix_coeffs[ i ] ue(v) attribute_cicp_video_full_range_flag[ i ] u(1) known_attribute_label_flag[ i ] u(1)  if( known_attribute_label_flag[ i] )    known_attribute_label[ i ] ue(v)  else   attribute_label_four_bytes[ i ] </CHANGE> u(32) }

In an example (Example 1), the following changes to the G-PCC draftstandard may be made. The beginning of changes from the draft G-PCCstandard are marked <CHANGE> and the end of changes are marked</CHANGE>.

known_attribute_label_flag[i] equal to 1 specifies know_attribute_labelis signaled for the i-th attribute, known_attribute_label_flag[i] equalto 0 specifies attribute_label_four_bytes is signaled for the i-thattribute.

known_attribute_label[i] equal to 0 specifies the attribute is colour.known_attribute_label[i] equal to 1 specifies the attribute isreflectance. known_attribute_label[i] equal to 2 specifies the attributeis frame index.

attribute_label_four_bytes[i] indicates the <CHANGE> remaining unknownattribute type with the 4 bytes code </CHANGE> Table 7.1 describes thelist of supported attributes and their relationship withattribute_label_four_bytes[i].

TABLE 7.1 attribute_label_four_bytes attribute_label_four_bytes[ i ]Attribute type <CHANGE>0 Transparency 1 Normals  2 . . . 255 Reserved256 . . . 0xffffffff Unspecified </CHANGE> sps_num_attribute_sets ue(v)for( i = 0; i< sps_num_attribute_sets; i++ ) { attribute_dimension_minus1[ i ] ue(v)  attribute_instance_id[ i ] ue(v)  attribute_bitdepth_minus1[i] ue(v)  if(attribute_dimension_minus1[ i] > 0 )    attribute_secondary_bitdepth_minus1[ i ] ue(v) known_attribute_label_flag[ i ] u(1)  if( known_attribute_label_flag[ i] )   known_attribute_label[ i ] ue(v)  else  attribute_label_four_bytes[ i ] u(32) <CHANGE>if(known_attribute_label[i]==0) /*color*/{ attribute_cicp_colour_primaries[ i ] ue(v) attribute_cicp_transfer_characteristics[ i ] ue(v) attribute_cicp_matrix_coeffs[ i ] ue(v) attribute_cicp_video_full_range_flag[ i ] u(1)  } </CHANGE> }

In another example, the following changes to the G-PCC draft standardmay be made. The beginning of changes from the draft G-PCC standard aremarked <CHANGE> and the end of changes are marked </CHANGE>.

sps_num_attribute_sets ue(v) for( i = 0; i< sps_num_attribute_sets; i++) {  attribute_dimension_minus1[ i ] ue(v)  attribute_instance_id[ i ]ue(v)   attribute_bitdepth_minus1[i] ue(v) if(attribute_dimension_minus1[ i ] > 0 )   attribute_secondary_bitdepth_minus1[ i ] ue(v)  <CHANGE>attribute_label_four_bytes[ i ] u(32)   if(attribute_label_four_bytes[i]==0) /*color*/{     attribute_cicp_colour_primaries[ i ] ue(v)    attribute_cicp_transfer_characteristics[ i ] ue(v)    attribute_cicp_matrix_coeffs[ i ] ue(v)    attribute_cicp_video_full_range_flag[ i ] u(1)     }  } </CHANGE> }

In another example, the semantics of attribute_label_four_bytes may bespecified as follows, with the beginning of deletions marked by <DELETE>and the end of deletions marked </DELETE> and the beginning of otherchanges marked <CHANGE> and the end of additions marked </CHANGE>:

attribute_label_four_bytes[i] indicates the <DELETE> known </DELETE>attribute type with the 4 bytes code <CHANGE> whenknown_attribute_label_flag is equal to 0 </CHANGE>. The table belowdescribes the list of supported attributes and their relationship withattribute_label_four_bytes[i].

attribute_label_four_bytes[ i ] Attribute type <DELETE>0 <DELETE>Colour1 Reflectance 2 Frame index</DELETE> 3</DELETE><CHANGE>0 Material ID 1Transparency 2 Normals 3</CHANGE> . . . 255 Reserved 256 . . .0xffffffff unspecified

A unique attribute label may be specified as follows:

-   -   AttributeLabel=attribute_label_four_bytes+N        where N is the number of known attributes labels specified (3 in        the above example).

In another example (Example 2), The signaling of CICP parameters may becontrolled by a flag attribute_cicp_params_present_flag[ ]. When thevalue of flag is equal to 0, G-PCC encoder 200 may not signal the CICP.

Descriptor seq_parameter_set( ) {  main_profile_compatibility_flag u(1) ...  sps_num_attribute_sets ue(v)  for( i = 0; i<sps_num_attribute_sets; i++ ) {   attribute_instance_id[ i ] ue(v)  attribute_dimension_minus1[ i ] ue(v)   attribute_bitdepth_minus1[ i ]ue(v)   if(attribute_dimension_minus1[ i ] > 0 )   attribute_secondary_bitdepth_minus1[ i ] ue(v)  <CHANGE>attribute_cicp_params_present_flag[ i ] <CHANGE>u(1)</CHANGE>  if( attribute_cicp_params_present_flag[ i ] = = 1 ) {</CHANGE>   attribute_cicp_colour_primaries[ i ] ue(v)   attribute_cicp_transfer_characteristics[ i ] ue(v)   attribute_cicp_matrix_coeffs[ i ] ue(v)   attribute_cicp_video_full_range_flag[ i ] u(1)   <CHANGE>}</CHANGE>  known_attribute_label_flag[ i ] u(1)   if( known_attribute_label_flag[i ] )    known_attribute_label[ i ] ue(v)   else   attribute_label_four_bytes[ i ] u(32)  }  ...<CHANGE> attribute_cicp_params_present_flag[i] equal to 1 specifies thatthe syntax elements attribute_cicp_colour_primaries[i],attribute_cicp_transfer_characteristics[i],attribute_cicp_matrix_coeffs[i] andattribute_cicp_video_full_range_flag[i] are signalled for the i-thattribute set. attribute_cicp_params_present_flag[i] equal to 0specifies that the syntax elements attribute_cicp_colour_primaries[i],attribute_cicp_transfer_characteristics[i],attribute_cicp_matrix_coeffs[i] andattribute_cicp_video_full_range_flag[i] are not signalled for the i-thattribute set. </CHANGE>

If it is decided that the CICP parameters are only needed for the colorattributes, then the flag need not be signaled and rather theknown_attribute_label[ ] or the attribute_label_four_bytes[ ] may beused to condition the presence of CICP parameters. For such a method,the signaling of the attribute labels may be made before the CICPparameters.

Generic representation of attribute-related parameters in an attributeparameter set (APS) and attribute slice header (ASH) is now described.Both APS and ASH are applicable to all attributes. In fact, eachattribute may have their own APS and ASH, as described previously.However, both APS and ASH contain syntax elements named _*_luma*, and*_chroma_* mainly for quantization/scaling related parameters, which aresemantically not consistent, as shown below.

Additionally, in an APS, some parameters are not applicable to aone-dimensional attribute (such as reflectance). These parameters maystill be present and may still need to be signaled (e.g., by G-PCCencoder 200). Signaling values that effectively disable these parametersis one solution. However, this may burden the bitstream conformancecheck as decoders (such as G-PCC decoder 300) may have to handle allpossible values to ensure robust decoding.

The APS and ASH syntax elements are shown below:

Descriptor attribute_parameter_set( ) {  aps_attr_parameter_set_id ue(v) aps_seq_parameter_set_id ue(v)  attr_coding_type ue(v) aps_attr_initial_qp ue(v)  aps_attr_chroma_qp_offset se(v) aps_slice_qp_delta_present_flag u(1)  LodParametersPresent = (attr_coding_type = = 0 | | attr_coding_type = = 2 ) ? 1 : 0  if(LodParametersPresent) {   lifting_num_pred_nearest_neighbours_minus1ue(v)   lifting_search_range_minus1 ue(v)   for( k = 0; k < 3; k++ )    lifting_neighbour_bias[ k ] ue(v)   if ( attr_coding_type = = 2 )   lifting_scalability_enabled_flag u(1)   if ( !lifting_scalability_enabled_flag ) {    lifting_num_detail_levels_minus1ue(v) [Ed. The V7.0 code use the variable without minus1. It should bealigned]     if ( lifting_num_detail_levels_minus1 > 0 ) {     lifting_lod_regular_sampling_enabled_flag u(1)      for( idx = 0;idx < num_detail_levels_minus1; idx++ ) {       if (lifting_lod_regular_sampling_enabled_flag )       lifting_sampling_period_minus2[ idx ] ue(v)       else lifting_sampling_distance_squared_scale_minus1[ idx ] ue(v)        if (idx != 0 )         lifting_sampling_distance_squared_offset[ idx ] ue(v)     }     }   }   if( attr_coding_type = = 0 ) {    lifting_adaptive_prediction_threshold ue(v)    lifting_intra_lod_prediction_num_layers ue(v)    lifting_max_num_direct_predictors ue(v)  inter_component_prediction_enabled_flag u(1)   }  }  if(attribute_coding_type = = 1 ) { //RAHT   raht_prediction_enabled_flagu(1)   if (raht_prediction_enabled_flag) {     raht_prediction_threshold0 ue(v)     raht_prediction_threshold1ue(v)   }  }  aps_extension _flag u(1)  if( aps_extension _flag )  while( more_data_in_byte_stream( ) )     aps_extension_data_flag u(1) byte_alignment( ) } attribute_slice_header( ) { ash_attr_parameter_set_id ue(v)  ash_attr_sps_attr_idx ue(v) ash_attr_geom_slice_id ue(v)  if ( aps_slice_qp_delta_present_flag ) {ash_attr_qp_delta_luma se(v)   if( attribute_dimension_minus1[ash_attr_sps_attr_idx ] > 0 ) ash_attr_qp_delta_chroma se(v)  } ash_attr_layer_qp_delta_present_flag u(1)  if (ash_attr_layer_qp_delta_present_flag ) {   ash_attr_num_layer_qp_minus1ue(v)   for( i = 0; i < NumLayerQp; i++ ){  ash_attr_layer_qp_delta_luma[i] se(v)     if(attribute_dimension_minus1[ ash_attr_sps_attr_idx ] > 0 ) ash_attr_layer_qp_delta_chroma[i] se(v)   }  } ash_attr_region_qp_delta_present_flag u(1)  if (ash_attr_region_qp_delta_present_flag ) {  ash_attr_qp_region_box_origin_x ue(v)  ash_attr_qp_region_box_origin_y ue(v)  ash_attr_qp_region_box_origin_z ue(v)   ash_attr_qp_region_box_widthue(v)   ash_attr_qp_region_box_height ue(v)  ash_attr_qp_region_box_depth ue(v)   ash_attr_region_qp_delta se(v)  } byte_alignment( ) }

According to the techniques of this disclosure, in some examples, forsemantic consistence, *_luma_* and *_chroma_* may be respectivelyreplaced with *_*(NULL) and *_secondary_*. Note, this only changes thenaming of the syntax element, whereas there is no change to thefunctional meaning. Additionally, G-PCC encoder 200 may signal in theAPS whether an attribute dimension is greater than 1, which may removethe presence of unnecessary syntax elements. (Note, in ASH, such amechanism is already applied as the attribute dimension can be read fromthe SPS. However, for the APS, the same information cannot be read fromthe SPS, as that would lead to a dependency between parameter sets,which may be undesirable). G-PCC encoder 200 may signal whether the APSattribute dimension is greater than 1 as a flag.

In some examples, a condition may be added that the value of the Dagshall not contradict the value of number of attribute dimensionssignaled for the attribute (e.g., if the flag equals 1, the flagindicates that there is more than one dimension for an attribute; thenthe flag shall not be equal to 1 when the number of attributes is lessthan or equal to 1.)

In one example, a flag aps_attr_dimension_gt1 should be equal to 1 whenattribute dimension is greater than 1. In one example, the signaling ofa syntax element indicative of a secondary delta QP (e.g.,ash_attr_qp_delta_secondary) may be conditioned on the number ofattribute dimensions being greater than 1. For example, G-PCC decoder300 may determine whether an attribute dimension of an attribute isgreater than 1. Based on the attribute dimension being greater than 1,G-PCC decoder 30) may parse an attribute slice header syntax elementindicative of a delta quantization parameter. G-PCC decoder 300 maydecode the point cloud data based on the delta quantization parameter.

The following changes to the G-PCC draft standard may be made. Thebeginning of changes from the draft G-PCC standard are marked <CHANGE>and the end of changes are marked </CHANGE>.

Descriptor attribute_parameter_set( ) {  aps_attr_parameter_set_id ue(v) aps_seq_parameter_set_id ue(v)  attr_coding_type ue(v)  <CHANGE>aps_attr_dimension_gt1 u(1) </CHANGE>  aps_attr_initial_qp ue(v) <CHANGE> if(aps_attr_dimension_gt1)    aps_attr_secondary_qp_offset</CHANGE> se(v)  aps_slice_qp_delta_present_flag u(1) LodParametersPresent = ( attr_coding_type = = 0 | | attr_coding_type == 2 ) ? 1 : 0  if( LodParametersPresent) {  lifting_num_pred_nearest_neighbours_minus1 ue(v)  lifting_search_range_minus1 ue(v)   for( k = 0; k < 3; k++ )   lifting_neighbour_bias[ k ] ue(v)   if ( attr_coding_type = = 2 )   lifting_scalability_enabled_flag u(1)   if ( !lifting_scalability_enabled_flag ) {    lifting_num_detail_levels_minus1ue(v) [Ed. The V7.0 code use the variable without minus1. It should bealigned]    if ( lifting_num_detail_levels_minus1 > 0 ) {    lifting_lod_regular_sampling_enabled_flag u(1)     for( idx = 0; idx< num_detail_levels_minus1; idx++ ) {      if (lifting_lod_regular_sampling_enabled_flag )      lifting_sampling_period_minus2[ idx ] ue(v)      else lifting_sampling_distance_squared_scale_minus1[ idx ] ue(v)       if (idx != 0 )  lifting_sampling_distance_squared_offset[ idx ] ue(v)     }   }   }   if( attr_coding_type = = 0 ) {   lifting_adaptive_prediction_threshold ue(v)   lifting_intra_lod_prediction_num_layers ue(v)   lifting_max_num_direct_predictors ue(v)   <CHANGE>if(aps_attr_dimension_gt1)     inter_component_prediction_enabled_flagu(1) </CHANGE>   } attribute_slice_header( ) { ash_attr_parameter_set_id ue(v)  ash_attr_sps_attr_idx ue(v) ash_attr_geom_slice_id ue(v)  if ( aps_slice_qp_delta_present_flag ) {<CHANGE> ash_attr_qp_delta </CHANGE> se(v)   if(attribute_dimension_minus1[ ash_attr_sps_attr_idx ] > 0 )  <CHANGE>ash_attr_qp_delta_secondary se(v) </CHANGE>  } ash_attr_layer_qp_delta_present_flag u(1)  if (ash_attr_layer_qp_delta_present_flag ) {   ash_attr_num_layer_qp_minus1ue(v)   for( i = 0; i < NumLayerQp; i++ ){    <CHANGE>ash_attr_layer_qp_delta[i] se(v) </CHANGE>    if(attribute_dimension_minus1[ ash_attr_sps_attr_idx ] > 0 )    <CHANGE>ash_attr_layer_qp_delta_secondary[i] se(v) </CHANGE>   }  } ash_attr_region_qp_delta_present_flag u(1)  if (ash_attr_region_qp_delta_present_flag ) {  ash_attr_qp_region_box_origin_x ue(v)  ash_attr_qp_region_box_origin_y ue(v)  ash_attr_qp_region_box_origin_z ue(v)   ash_attr_qp_region_box_widthue(v)   ash_attr_qp_region_box_height ue(v)  ash_attr_qp_region_box_depth ue(v)   ash_attr_region_qp_delta se(v)  } byte_alignment( ) }

region_qp_delta_signaling is now described. In an ASH, there is a flagto indicate whether region qp delta is present or not, and anothersyntax element to indicate region_qp_delta value. However, ifregion_qp_delta_present_flag is true, the value of region_qp_deltashould be nonzero.

Additionally, according to the draft G-PCC standard, each slice can onlyspecify one region where delta QP can be used. However, it is perhapsmore flexible to allow the possibility of having multiple such regionsinstead of only one. Bounding boxes of such regions may or may not beoverlapping. In this case, a point may belong to multiple bounding boxes(in the overlapping case), and the delta qp of the lowest region indexmay be used, or alternatively the delta qp of the nearest neighbor pointmay be used.

According to the techniques of this disclosure, in an example, insteadof G-PCC encoder 200 signaling region_qp_delta, G-PCC encoder 200 maysignal region_qp_delta_abs_minus1 (magnitude) and region_qp_delta sign.The following changes to the G-PCC draft standard may be made. Thebeginning of changes from the draft G-PCC standard are marked <CHANGE>and the end of changes are marked </CHANGE>.

 ash_attr_region_qp_delta_present_flag u(1)  if (ash_attr_region_qp_delta_present_flag ) {  ash_attr_qp_region_box_origin_x ue(v)  ash_attr_qp_region_box_origin_y ue(v)  ash_attr_qp_region_box_origin_z ue(v)   ash_attr_qp_region_box_widthue(v)   ash_attr_qp_region_box_height ue(v)  ash_aftr_qp_region_box_depth ue(v)   <CHANGE>ash_attr_region_qp_delta_abs_minus1 ue(v)  ash_attr_region_qp_delta_sign u(1) </CHANGE>  }  byte_alignment( ) }

In another example, ash_attr_num_regions_qp_delta specifies the numberof regions where deltaQP will be applied. The value ofash_attr_num_regions_qp_delta may be in the ranget of 0 to N, inclusive,where N may be a pre-determined value (e.g., 4 or 8). The followingchanges to the G-PCC draft standard may be made. The beginning ofchanges from the draft G-PCC standard are marked <CHANGE> and the end ofchanges are marked </CHANGE>.

 ash_attr_num_regions_qp_delta ue(v)  for (i=0;i<ash_attr_num_regions_qp_delta; i++ ) {  ash_attr_qp_region_box_origin_x[i] ue(v)  ash_attr_qp_region_box_origin_y[i] ue(v)  ash_attr_qp_region_box_origin_z[i] ue(v)  ash_attr_qp_region_box_width[i] ue(v)  ash_attr_qp_region_box_height[i] ue(v)  ash_aftr_qp_region_box_depth[i] ue(v)   <CHANGE>ash_attr_region_qp_delta_abs_minus1[i] ue(v)  ash_attr_region_qp_delta_sign[i] u(1) </CHANGE>  }  byte_alignment( )}

LoD parameters when coding a point cloud with multiple attributes arenow described. When spatial scalability is needed,lifting_scalability_enabled_flag should be true for all the attributes.In the draft G-PCC standard, this flag is independently coded for eachattribute, which does not necessarily follow this requirement everytime. Also, as a corollary, both attributes should use the sametransform, e.g., the lifting transform, e.g., attr_coding_type==2. Sucha restriction is also not present in the draft G-PCC standard.

Additionally, in typical use cases, LoD generation parameters are sharedacross all attributes (as in G-PCC common test conditions), althoughG-PCC encoder 200 may signal the LoD generation parameters separatelyfor each attribute. Signaling these parameters multiple times isinefficient as this increases the bit budget for typical use cases.

According to the techniques of this disclosure, in an example, toprovide the means of sharing the LoD parameters if applicable, a commonLoD parameter set (CPS) may be defined where G-PCC encoder 200 maydefine common LoD parameters. On the APS level, G-PCC encoder 200) mayoverride common LoD parameters if the attributes need to use differentLoD parameters. The following changes to the G-PCC draft standard may bemade. The beginning of changes from the draft G-PCC standard are marked<CHANGE> and the end of changes are marked </CHANGE>.

Descriptor attribute_parameter_set( ) {  aps_attr_parameter_set_id ue(v) aps_seq_parameter_set_id ue(v)  attr_coding_type ue(v) aps_attr_initial_qp ue(v)  aps_attr_chroma_qp_offset se(v) aps_slice_qp_delta_present_flag u(1)  LodParametersPresent = (attr_coding_type = = 0 | | attr_coding_type = = 2 ) ? 1 : 0   <CHANGE>if( attr_coding_type = = 2 )    lifting_scalability_enabled_flag u(1) if(LodParametersPresent && !lifting_scalability_enabled_flag)  aps_lod_parameters_override_flag u(1) </CHANGE>  if(aps_lod_parameters_override_flag) {  lifting_num_pred_nearest_neighbours_minus1 ue(v)  lifting_search_range_minus1 ue(v)   for( k = 0; k < 3; k++ )   lifting_neighbour_bias[ k ] ue(v)   if ( !lifting_scalability_enabled_flag ) {    lifting_num_detail_levels_minus1ue(v) [Ed. The V7.0 code use the variable without minus1. It should bealigned]     if ( lifting_num_detail_levels_minus1 > 0 ) {     lifting_lod_regular_sampling_enabled_flag u(1)      for( idx = 0;idx < num_detail_levels_minus1; idx++ ) {       if (lifting_lod_regular_sampling_enabled_flag )       lifting_sampling_period_minus2[ idx ] ue(v)       else lifting_sampling_distance_squared_scale_minus1[ idx ] ue(v)        if (idx != 0 )  lifting_sampling_distance_squared_offset[ idx ] ue(v)      }    }   }  <CHANGE>common_lod_parameter_set( ) {  cps_attr_parameter_set_id ue(v)   cps_seq_parameter_set_id ue(v)  cps_attr_coding_type ue(v)   LodParametersPresent = (cps_attr_coding_type = = 0 | |  cps_attr_coding_type = = 2 ) ? 1 : 0    if (cps_attr_coding_type = = 2 )     cps_lifting_scalability_enabled_flagu(1)   if( LodParametersPresent) {   cps_lifting_num_pred_nearest_neighbours_minus1 ue(v)   cps_lifting_search_range_minus1 ue(v)    for( k = 0; k < 3; k++ )     cps_lifting_neighbour_bias[ k ] ue(v)    if ( !lifting_scalability_enabled_flag ) {    cps_lifting_num_detail_levels_minus1 ue(v)  [Ed. The V7.0 code usethe variable without minus1. It should be  aligned]      if (cps_lifting_num_detail_levels_minus1 > 0 ) {      cps_lifting_lod_regular_sampling_enabled_flag u(1)       for( idx= 0; idx < num_detail_levels_minus1; idx++ ) {        if (cps_lifting_lod_regular_sampling_enabled_flag )        cps_lifting_sampling_period_minus2[ idx ] ue(v)        else  cps_lifting_sampling_distance_squared_scale_minus1[ idx ] ue(v)        if ( idx != 0 )   cps_lifting_sampling_distance_squared_offset[idx ] ue(v)       }     }    }  } </CHANGE>

When the override flag is not present in an APS, G-PCC decoder 300 maydetermine the corresponding parameters are equal to a corresponding CPSparameter. Also, the attribute coding type and lifting scalabilityenabled flag should be the some for the APS of different attributes andthe CPS.

The semantics of the syntax elements in the CPS listed above are similarto those currently defined in the APS, and apply to all the attributesthat refer to the CPS.

In one example, G-PCC encoder 200 may signal a CPS ID in the APS or theASH to specify the CPS corresponding to a particular attribute. G-PCCdecoder 300 may parse the CPS ID. In another example, G-PCC encoder 200may signal the CPS ID in the APS only when theaps_lod_parameters_override_flag is equal to 0.

In some examples, the signaling of the aps_lod_parameters_override_flagmay be controlled by a higher level indication (e.g.aps_lod_parameters_override_present_flag) that G-PCC encoder 200 maysignal in the SPS. When the higher level indication specifies thataps_lod_parameters_override_flag is not signaled, G-PCC encoder 200 maynot explicitly signal APS LoD parameters in the APS. G-PCC decoder 300may derive the APS LoD parameters from a CPS to be used for theattribute.

In another example, G-PCC encoder 200 may signal an LoD attributeparameter set that is expected to contain the LoD information for theattributes of the point cloud. G-PCC decoder 300 may parse the LoDinformation. When lifting scalability is used for any attribute that iscoded with attr_coding_type=2 (prediction lifting), all attributes codedwith attr_coding_type=2 (prediction lifting) may be coded with liftingscalability. The parameter set may be referred to by the attribute sliceheader. The changes to the APS and the new LoD parameter set in thedraft G-PCC standard are specified below with changes shown between<CHANGE> and </CHANGE> and deletions shown between <DELETE> and</DELETE>:

Descriptor attribute_parameter_set( ) {  aps_attr_parameter_set_id ue(v) aps_seq_parameter_set_id ue(v)  attr_coding_type ue(v) aps_attr_initial_qp ue(v)  aps_attr_chroma_qp_offset se(v) aps_slice_qp_delta_present_flag u(1)  if(attr_coding_type = = 0) {//RAHT   raht_prediction_enabled_flag u(1)   if(raht_prediction_enabled_flag) {     raht_prediction_threshold0 ue(v)    raht_prediction_threshold1 ue(v)   }  }  else if (attr_coding_type<= 2) <DELETE> { </DELETE>   <CHANGE>aps_lod_parameter_set_id<CHANGE><CHANGE>ue(v) </CHANGE>  <DELETE> <DELETE> ue(v) lifting_num_pred_nearest_neighbours_minus1  lifting_search_range_minus1 ue(v)   for( k = 0; k < 3; k++ )    lifting_neighbour_bias[ k ] ue(v)   if ( attr_coding_type = = 2   lifting_scalability_enabled_flag u(1)   if ( !lifting_scalability_enabled_flag ) {    lifting_num_detail_levels_minus1ue(v)     if ( lifting_num_detail_levels_minus1 > 0 ) {     lifting_lod_regular_sampling_enabled_flag u(1)      for( idx = 0;idx < num_detail_levels_minus1; idx++ ) {       if (lifting_lod_regular_sampling_enabled_flag )       lifting_sampling_period_minus2[ idx ] ue(v)       else lifting_sampling_distance_squared_scale_minus1[ idx ] ue(v)       if (idx != 0 )  lifting_sampling_distance_squared_offset[ idx ] ue(v)</DELETE>      }     }   } </DELETE>   if( attr_coding_type = = 1 ) {    lifting_adaptive_prediction_threshold ue(v)    lifting_intra_lod_prediction_num_layers ue(v)    lifting_max_num_direct_predictors ue(v)    inter_component_prediction_enabled_flag u(1)   }  } aps_extension_flag u(1)  if( aps_extension_flag )   while(more_data_in_byte_stream( ) )     aps_extension_data_flag u(1) byte_alignment( ) }<CHANGE>aps_lod_parameter_set_id specifies the value ofaps_lod_parameter_set_id for the active LoD parameter set. The value ofaps_lod_parameter_set_id shall be in the range of 0 to 15, inclusive.When attr_coding_type is equal to 1, the value oflifting_scalability_enabled_flag in the LoD parameter set referred to byaps_common_lod_parameter_set_id shall be equal to 0.When two or more attributes refer to the respective APS that haveattr_coding_type equal to 2, the value oflifting_scalability_enabled_flag shall be the same for LoD parametersets referred to by aps_lod_parameter_set_id of the respective APS.</CHANGE>

Alternatively, the following constraint may be added to the draft G-PCCstandard: The value of lifting_scalability_enabled_flag shall be thesame for all of the attributes of a point cloud.

De- scrip- tor lod_parameter_set( ) {  lod_parameter_set_id ue(v) lifting_num_pred_nearest_neighbours_minus1 ue(v) lifting_search_range_minus1 ue(v)  for( k = 0; k < 3; k++ )  lifting_neighbour_bias[ k ] ue(v)  lifting_scalability_enabled_flagu(1)  if ( ! lifting_scalability_enabled_flag ) {  lifting_num_detail_levels_minus1 ue(v)   if (lifting_num_detail_levels_minus1 > 0 ) {   lifting_lod_regular_sampling_enabled_flag u(1)    for( idx = 0; idx <lifting_num_detail_levels_minus1; idx++ ) {     if (lifting_lod_regular_sampling_enabled_flag )     lifting_sampling_period_minus2[ idx ] ue(v)     else lifting_sampling_distance_squared_scale_minus1[ idx ] ue(v)     if (idx != 0 )       lifting_sampling_distance_squared_offset[ idx ] ue(v)   }   }  }  lps_extension _flag u(1)  if( lps_extension _flag )  while( more_data_in_byte_stream( ) )    lps_extension_data_flag u(1) byte_alignment( ) }

The semantics of all the syntax elements in the LoD parameter set may beidentical to that of the APS, except that they apply to the attributesthat refer to the LoD parameter set. Other changes include thefollowing:

<CHANGE> lod_parameter_set_id provides an identifier for the LPS forreference by other syntax elements. The value of lod_parameter_set_idshall be in the range of 0 to 15, inclusive.lps_extension_flag equal to 0 specifies that no lps_extension_data_flagsyntax elements are present in the LPS syntax structure.lps_extension__flag shall be equal to 0 in bitstreams conforming to thisversion of this Specification. The value of 1 for lps_extension_flag isreserved for future use by ISO/IEC. Decoders shall ignore alllps_extension_data_flag syntax elements that follow the value 1 forlps_extension_flag in an LPS syntax structure.lps_extension_data_flag may have any value. Its presence and value donot affect decoder conformance to profiles specified in this version ofthis Specification. Decoders conforming to this version of thisSpecification shall ignore all lps_extension_data_flag syntax elements.</CHANGE>

Geometry slices referring to parameter sets are now discussed. In thedraft G-PCC standard, a geometry slice contains agsh_geometry_parameter_set_id that is the ID of the GPS to which theslice refers. There is no restriction on the value range ofgsh_geometry_parameter_set_ID, The value of gps_geom_parameter_set_id (aseparate syntax element in the GPS, rather than the GSH) is in the rangeof 0 to 15, inclusive.

Moreover, each geometry slice in a point cloud frame/tile is allowed torefer to any GPS (because each geometry slice in a frame/tile may signalany valid value of gsh_geometry_parameter_set_id.) Although there may besome special use cases where such flexibility may be needed, for mosttypical cases it does not make sense to have such flexibility. Suchflexibility also forces decoders (e.g., G-PCC decoder 300) to conductconformance checks to test all possible combinations (different valuesfor the GPS syntax elements in different GPSs that may be referred bythe same frame). This increases costs for decoder manufacturers.

According to the techniques of this disclosure, in an example, arestriction may be added that the value of gsh_geometry_parameter_set_idshall be in the range of 0 to 15, inclusive. For example, G-PCC encoder200 may encode the value of gsh_geometry_parameter_set_id within therange of 0 to 15 inclusive.

In some examples, when more than one geometry slice is present in atile, a restriction may be added that each such slice shall refer to thesame GPS. In one example, when more than one geometry slice is presentin a frame, a restriction may be added that each such slice shall referto the same GPS. In another example, when more than one geometry sliceis present in the point cloud sequence/bitstream, a restriction may beadded that each such slice shall refer to the same GPS. G-PCC encoder200 may apply these restrictions.

In an example, the value range of gsh_geometry_parameter_set_id isspecified, and geometry slices of the same frame are restricted to referto the same GPS.

gsh_geometry_parameter_set_id specifies the value of thegps_geom_parameter_set_id of the active GPS. <CHANGE> The value ofgsh_geometry_parameter_set_id shall be in the range of 0 to 15,inclusive.

When more than one geometry slice is associated with a frame, the valueof gsh_geometry_parameter_set_id shall be the same for all the geometryslices associated with the frame. </CHANGE>

Alternatively, the following could be added to the draft G-PCC standard:When more than one geometry slice is associated with a tile, the valueof gsh_geometry_parameter_set_id shall be the same for all the geometryslices associated with the tile.

Attribute slices referring to parameter sets are now discussed. In thedraft G-PCC standard, the attribute slice contains anash_attr_parameter_set_id that is the identifier of the APS to which theslice refers. There is no restriction on the value range ofash_attr_parameter_set_ID. The value of aps_attr_parameter_set_id (aseparate syntax element in the APS, rather than the ASH) is in the rangeof 0 to 15, inclusive.

Moreover, according to the draft G-PCC standard, each attribute slice(of a particular attribute) in a point cloud frame/tile is allowed torefer to any APS (because each attribute slice in a frame/tile maysignal any valid value of ash_attr_parameter_set_id). Although there maybe some special use cases where such flexibility may be needed, for mosttypical cases it does not make sense to have such flexibility. Suchflexibility also forces decoders (such as G-PCC decoder 300) to conductconformance checks to test all possible combinations (different valuesfor the APS syntax elements in different APSs that may be referred to bythe same frame). This increases costs for decoder manufacturers.

According to the techniques of this disclosure, in an example, arestriction may be added that the value of ash_attr_parameter_set_idshall be in the range of 0 to 15, inclusive. For example, G-PCC encoder200 may encode the value of ash_attr_parameter_set_id to be within therange of 0 to 15.

When more than one attribute slice of the same attribute (e.g.,ash_attr_sps_attr_idx) is present in a tile, a restriction may be addedthat each such slice shall refer to the same GPS. In one example, whenthere is more than one attribute slice of the same attribute (e.g.,ash_attr_sps_attr_idx) in a frame, a restriction may be added that eachsuch slice shall refer to the same GPS. In another example, when thereis more than one attribute slice of the same attribute (e.g.,ash_attr_sps_attr_idx) in a point cloud sequence/bitstream, arestriction may be added that each such slice shall refer to the sameGPS. G-PCC encoder 200 may apply these restrictions.

In one example, the value range of ash_attr_parameter_set_id isspecified, and attribute slices (of the same attribute type or index) ofthe same frame are restricted to refer to the same APS.

ash_attr_parameter_set_id specifies the value of theaps_attr_parameter_set_id of the active APS. The value ofash_attr_parameter_set_id shall be in the range of 0 to 15, inclusive.

<CHANGE> When more than one attribute slice is associated with a frame,the value of ash_attr_parameter_set_id shall be the same for all theattribute slices associated with the frame that have the same value ofash_attr_sps_attr_idx. </CHANGE>

Alternatively, the following could be added to the draft G-PCC standard:When more than one attribute slice is associated with a tile, the valueof ash_attr_parameter_set_id shall be the same for all the attributeslices associated with the tile that have the same value ofash_attr_sps_attr_idx.

FIG. 7 is a flow diagram of example region box and slice bounding boxtechniques according to this disclosure. G-PCC decoder 300 may determinedimensions of a region box (700). For example, G-PCC decoder 300 mayparse a syntax element(s) indicative of dimensions of the region box.G-PCC decoder 300 may determine dimensions of a slice bounding box(702). For example, G-PCC decoder 300 may parse a syntax element(s)indicative of dimensions of the slice bounding box. G-PCC decoder 300may decode a slice of the point cloud data associated with the slicebounding box (704). For example, G-PCC decoder 300 may decode the slicewithin the slice bounding box. The dimensions of the region bounding boxmay be constrained to not exceed the dimensions of the slice boundingbox. For example, it may be a requirement of bitstream conformance thatthe dimensions of the region bounding box not exceed the dimensions ofthe slice bounding box. In some examples, the dimensions of the regionbox are constrained such that no point in the region box is outside theslice bounding box.

FIG. 8 is a flow diagram of an example slice identifier techniquesaccording to this disclosure. G-PCC decoder 300 may determine a firstslice MD of a first geometry slice associated with a frame of the pointcloud data (800). For example, G-PCC decoder 300 may parse a syntaxelement indicative of the first slice ID of the first geometry slice ofthe frame. G-PCC decoder 300 may determine a second slice ID of a secondgeometry slice associated with the frame of the point cloud data (802).For example, G-PCC decoder 300 may parse a syntax element indicative ofthe second slice ID of the second geometry slice of the frame. Based onthe second slice ID being equal to the first slice ID, G-PCC decoder 300may determine the second slice to contain identical content to the firstslice (804). For example, it may be a requirement of bitstreamconformance that if a first geometry slice of a frame of point clouddata has the same slice ID as a second geometry slice of the frame, thatthe content of the first geometry slice and the second geometry slice bethe same, G-PCC decoder 300 may decode the point cloud data based on theFirst slice ID (806). For example, G-PCC decoder 300 may decode both thefirst geometry slice and the second geometry slice based on the firstslide ID.

FIG. 9 is a flow diagram illustrating an example of delta quantizationparameter techniques according to this disclosure. G-PCC decoder 300 maydetermine whether an attribute dimension of an attribute is greater than1 (900). For example, G-PCC decoder 300 may parse a syntax elementindicative of whether the attribute dimension is greater than 1 in asequence parameter set. Based on the attribute dimension being greaterthan 1, G-PCC decoder 300 may parse an attribute slice header syntaxelement indicative of a delta quantization parameter (902). For example,G-PCC decoder 300 may parse ash_attr_qp_delta_secondary (orash_attr_qp_delta_chroma) in an attribute slice header. G-PCC decoder300 may decode the point cloud data based on the delta quantizationparameter (904). In some examples, as part of determining whether theattribute dimension is greater than 1, G-PCC decoder 300 may parse asyntax element in a sequence parameter set.

in some examples, G-PCC decoder 300 may determine a slice dimension,parse a trisoup node size syntax element indicative of a size of a nodecoded with trisoup coding mode, and decode the point cloud data based onthe size of the node. In these examples, a value of the trisoup nodesize syntax element may be constrained to not exceed the slicedimension.

In some examples, G-PCC decoder 300 may parse an attribute slice headersyntax element indicative of a number of regions where a deltaquantization parameter will be applied, and decode the point cloud databased on the number of regions. In these examples, a value of theattribute slice header syntax element may be constrained within a rangeof 0 to N, where N is a predetermined value, such as 4 or 8 or someother value. The number of regions may be coded using exponential golombcode (e.g., ue(v)).

In some examples, G-PCC decoder 300 may parse a geometry slice headersyntax element indicative of a geometry parameter set identifier. Inthese examples, a value of the geometry slice header syntax element isrestricted to be in a range of 0 to 15 inclusive. In some examples,G-PCC decoder may decode the point cloud data further based on ageometry parameter set identified by the geometry parameter setidentifier.

In some examples, G-PCC decoder 300 may parse an attribute slice headersyntax element indicative of an attribute parameter set identifier. Inthese examples, a value of the attribute slice header syntax element maybe restricted to be in a range of 0 to 15 inclusive. In some examples,G-PCC decoder may decode the point cloud data further based on anattribute parameter set identified by the attribute parameter setidentifier.

Examples in the various aspects of this disclosure may be usedindividually or in any combination.

This disclosure contains the following examples.

Clause 1. A method of coding point cloud data, the method comprising:constraining a region box to not exceed dimensions of a slice boundingbox; and coding a slice of the point cloud data associated with theslice bounding box.

Clause 2. The method of clause 1, wherein the constraining the regionbox comprises constraining the region box such that no point in theregion box is outside the slice bounding box.

Clause 3. The method of clause 1 or 2, further comprising refrainingfrom signaling a value of 0 for a width, height or depth of the regionbox.

Clause 4. A method of coding point cloud data, the method comprising:associating a tile_inventory( ) syntax element with a frame of the pointcloud data; and coding the frame based on the tile_inventory( ) syntaxelement.

Clause 5. The method of clause 4, further comprising signaling thetile_inventory( ) syntax element.

Clause 6. The method of clause 4, wherein the associating thetile_inventory( ) syntax element with the frame comprises: determiningwhether a frame index associated with the frame has an equivalent valueto the tile_inventory( ) syntax element; and based on the frame indexhaving an equivalent value to the tile_inventory( ) syntax element,associating the tile inventory( ) syntax element with the frame.

Clause 7. The method of any combination of clauses 4-6, furthercomprising constraining the value of tile_id in a geometry slice headerto be in the range of 0 to N, inclusive, wherein the value of N is oneless than a number of tiles signaled in the tile_inventory( ) syntaxelement associated with the frame.

Clause 8. A method of coding point cloud data, the method comprising:determining whether multiple slices are present in a tile associatedwith a frame; based on there being multiple slices present in the tile,determining one or more syntax elements; and coding the point cloud databased on the syntax elements.

Clause 9. The method of clause 8, further comprising: determiningwhether two geometry slices have different values of gsh_slice_id for atile; and based on the two geometry slices having different values ofgsh_slice_id, determining a value of gps_box_present_flag to be 1.

Clause 10. The method of clause 8, further comprising: determiningwhether two geometry slices have different values of gsh_slice_id and asame tile ID and a same frame index; and based on the two geometryslices having different values of gsh_slice_id and a same tile ID and asame frame index, determining a value of gps_box_present_flag to be 1.

Clause 11. A method of coding point cloud data, the method comprising:determining a slice dimension; restricting a value oflog2_trisoup_node_size to not exceed the slice dimension; and coding thepoint cloud data based on the log2_trisoup_node_size.

Clause 12. The method of clause 11, wherein a value ofgsh_log2_max_nodesize is greater than or equal to the value oflog2_trisoup_node_size.

Clause 13. The method of clause 11, wherein the value oflog2_trisoup_node_size syntax element is less than or equal tomin(gsh_log2_max_nodesize_x, gsh_log2_max_nodesize_y, gsh_log2max_nodesize_z) when gps_implicit_geom_partition_flag is equal to 1, andgreater than or equal to gsh_log2_max_nodesize otherwise.

Clause 14. A method of coding point cloud data, the method comprising:determining whether two geometry slices associated with a frame of thepoint cloud data have a same slice ID; based on the two geometry sliceshaving the same slice ID, restricting the two geometry slices to have asame content; and coding the point cloud data based on the restriction.

Clause 15. A method of coding point cloud data, the method comprising:determining whether two geometry slices are associated with a sameframe; based on the two geometry slices being associated with the sameframe, restricting the two geometry slices from having a same value ofslice ID; and coding the point cloud data based on each slice ID.

Clause 16. A method of coding point cloud data, the method comprising:determining whether all points in a point cloud are associated with arespective unique point; based on all points in the point cloud beingassociated with a respective unique point, restricting slices fromcontaining two points associated with a same position; and coding thepoint cloud data based on the restriction.

Clause 17. The method of clause 16, further comprising restrictingsignaling of a syntax element indicative of slices containing two pointsassociated with the same position.

Clause 18. A method of coding point cloud data, the method comprising:determining color related syntax elements; signaling the color relatedsyntax elements for color attributes; refraining from signaling thecolor related syntax elements for other purposes; and coding the pointcloud data based on the color related syntax elements.

Clause 19. The method of clause 18, further comprising: determiningwhether known_attribute_label_flag is 0; based onknown_attribute_label_flag being 0, not including known attributes inattribute_label_four_bytes.

Clause 20. The method of clause 18, further comprising only representingeach attribute in attribute_label_four_bytes.

Clause 21. A method of coding point cloud data, the method comprising:determining whether an attribute dimension is greater than 1; based onthe attribute dimension being greater than 1, signaling a flag in theattribute parameter set; and coding the point cloud data based on theflag.

Clause 22. The method of clause 21, further comprising restricting thevalue of the flag to not contradict the value of number of attributedimensions signaled for the attribute.

Clause 23. A method of coding point cloud data, the method comprising:refraining from signaling region_qp_delta; signalingregion_qp_delta_abs_minus1 and region_qp_delta sign; and coding thepoint cloud data based on region_qp_delta_abs_minus1 andregion_qp_delta_sign.

Clause 24. The method of clause 23, further comprising: determining anumber of regions where deltaQP will be applied; and signaling a syntaxelement indicative of the number of regions where deltaQP will beapplied.

Clause 25. A method of coding point cloud data, the method comprising:providing a common level of detail (LoD) parameter set (CPS) determininga LoD syntax element; and coding the point cloud data based on the LoDsyntax element.

Clause 25.5 The method of clause 25, wherein based on the LoD syntaxelement equaling 2, all attributes to be coded with the LoD syntaxelement equaling 2, are coded with lifting scalability.

Clause 26. The method of clause 25, further comprising: determiningwhether an override flag is present in an attribute parameter set (APS);based on the override flag not being present in the APS, determining acommon parameter set (CPS) parameters to be equal to corresponding APSparameters.

Clause 27. The method of clause 25 or 26, further comprising:determining attribute coding type and lifting scalability enabled flagto be equal for the APS and the CPS.

Clause 28. The method of any combination of clauses 25-27, furthercomprising signaling a CPS ID indicative of a CPS corresponding to anattribute.

Clause 29. The method of clause 28, wherein the CPS ID is in one of anAPS or an attribute slice header (ASH).

Clause 30. The method of clause 28 or 29, further comprising:determining whether aps_lod_parameters_override_flag is equal to 0; andbased on aps_lod_parameters_override_flag being equal to 0, signalingthe CPS ID.

Clause 31. The method of any combination of clauses 25-30, furthercomprising: determining whether aps_lod_parameters_override_flag is notsignaled; based on aps_lod_parameters_override_flag not being signaled,refraining from signaling APS parameters; and deriving parameters fromthe CPS for use with an attribute.

Clause 31.1 A method of coding point cloud data, the method comprising:determining whether more than one geometry slice is in a tile; based onmore than one geometry slice being in a tile, restricting each geometryslice in the tile to refer to the same GPS; and coding the point clouddata based on the GPS.

Clause 31.2 A method of coding point cloud data, the method comprising:determining whether more than one attribute slice is in a tile; based onmore than one attribute slice being in a tile, restricting each geometryslice in the tile to refer to the same GPS; and coding the point clouddata based on the GPS.

Clause 32. The method of any of clauses 1-31.2, further comprisinggenerating the point cloud.

Clause 33. A device for processing a point cloud, the device comprisingone or more means for performing the method of any of clauses 1-32.

Clause 34. The device of clause 33, wherein the one or more meanscomprise one or more processors implemented in circuitry.

Clause 35. The device of any of clauses 33 or 34, further comprising amemory to store the data representing the point cloud.

Clause 36. The device of any of clauses 33-35, wherein the devicecomprises a decoder.

Clause 37. The device of any of clauses 33-36, wherein the devicecomprises an encoder.

Clause 38. The device of any of clauses 33-37, further comprising adevice to generate the point cloud.

Clause 39. The device of any of clauses 33-38, further comprising adisplay to present imagery based on the point cloud.

Clause 40. A computer-readable storage medium having stored thereoninstructions that, when executed, cause one or more processors toperform the method of any of clauses 1-32.

Clause 41. A method of decoding point cloud data, the method comprising:determining dimensions of a region box; determining dimensions of aslice bounding box; and decoding a slice of the point cloud dataassociated with the slice bounding box, wherein the dimensions of theregion box are constrained to not exceed the dimensions of the slicebounding box.

Clause 42. The method of clause 41, wherein the dimensions of the regionbox are constrained such that no point in the region box is outside theslice bounding box.

Clause 43. The method of clause 41 or 42, further comprising:determining a slice dimension; parsing a trisoup node size syntaxelement indicative of a size of a node coded with trisoup coding mode;and decoding the point cloud data based on the size of the node, whereina value of the trisoup node size syntax element is constrained to notexceed the slice dimension.

Clause 44. The method of any combination of clauses 41-43, furthercomprising: parsing an attribute slice header syntax element indicativeof a number of regions where a delta quantization parameter will beapplied; and decoding the point cloud data based on the number ofregions, wherein a value of the attribute slice header syntax element isconstrained within a range of 0 to N, where N is a predetermined value.

Clause 45. The method of any combination of clauses 41-44, furthercomprising: parsing a geometry slice header syntax element indicative ofa geometry parameter set identifier, wherein the value of the geometryslice header syntax element is restricted to be in a range of 0 to 15inclusive, and wherein the decoding the point cloud data is furtherbased on a geometry parameter set identified by the geometry parameterset identifier.

Clause 46. The method of any combination of clauses 41-45, furthercomprising: parsing an attribute slice header syntax element indicativeof an attribute parameter set identifier, wherein the value of theattribute slice header syntax element is restricted to be in a range of0 to 15 inclusive, and wherein the decoding the point cloud data isfurther based on an attribute parameter set identified by the attributeparameter set identifier.

Clause 47. A method of decoding point cloud data, the method comprising:determining a first slice identifier (ID) of a first geometry sliceassociated with a frame of the point cloud data; determining a secondslice ID of a second geometry slice associated with the frame of thepoint cloud data; based on the second slice ID being equal to the firstslice ID, determining the second slice to contain identical content tothe first slice; and decoding the point cloud data based on the firstslice ID.

Clause 48. The method of clause 47, further comprising: determining aslice dimension; parsing a trisoup node size syntax element indicativeof a size of a node coded with trisoup coding mode; and decoding thepoint cloud data based on the size of the node, wherein a value of thetrisoup node size syntax element is constrained to not exceed the slicedimension.

Clause 49. The method of clause 47 or 48, further comprising: parsing anattribute slice header syntax element indicative of a number of regionswhere a delta quantization parameter will be applied; and decoding thepoint cloud data based on the number of regions, wherein a value of theattribute slice header syntax element is constrained within a range of 0to N, where N is a predetermined value.

Clause 50. The method of any combination of clauses 47-49, furthercomprising: parsing a geometry slice header syntax element indicative ofa geometry parameter set identifier, wherein the value of the geometryslice header syntax element is restricted to be in a range of 0 to 15inclusive, and wherein the decoding the point cloud data is furtherbased on a geometry parameter set identified by the geometry parameterset identifier.

Clause 51. The method of any combination of clauses 47-50, furthercomprising: parsing an attribute slice header syntax element indicativeof an attribute parameter set identifier, wherein the value of theattribute slice header syntax element is restricted to be in a range of0 to 15 inclusive, and wherein the decoding the point cloud data isfurther based on an attribute parameter set identified by the attributeparameter set identifier.

Clause 52. A method of decoding point cloud data, the method comprising:determining whether an attribute dimension of an attribute is greaterthan 1; based on the attribute dimension being greater than 1, parsingan attribute slice header syntax element indicative of a deltaquantization parameter, and decoding the point cloud data based on thedelta quantization parameter.

Clause 53. The method of clause 52, wherein determining whether theattribute dimension is greater than 1 comprises parsing a syntax elementin a sequence parameter set.

Clause 54. The method of clause 52 or 53, further comprising:determining a slice dimension; parsing a trisoup node size syntaxelement indicative of a size of a node coded with trisoup coding mode;and decoding the point cloud data based on the size of the node, whereina value of the trisoup node size syntax element is constrained to notexceed the slice dimension.

Clause 55. The method of any combination of clauses 52-54, furthercomprising: parsing an attribute slice header syntax element indicativeof a number of regions where the delta quantization parameter will beapplied; and decoding the point cloud data based on the number ofregions, wherein a value of the attribute slice header syntax element isconstrained within a range of 0 to N, where N is a predetermined value.

Clause 56. The method of any combination of clauses 52-55, furthercomprising: parsing a geometry slice header syntax element indicative ofa geometry parameter set identifier, wherein a value of the geometryslice header syntax element is restricted to be in a range of 0 to 15inclusive, and wherein the decoding the point cloud data is furtherbased on a geometry parameter set identified by the geometry parameterset identifier.

Clause 57. The method of any combination of clauses 52-56, furthercomprising: parsing an attribute slice header syntax element indicativeof an attribute parameter set identifier, wherein a value of theattribute slice header syntax element is restricted to be in a range of0 to 15 inclusive, and wherein the decoding the point cloud data isfurther based on an attribute parameter set identified by the attributeparameter set identifier.

Clause 58. A device for decoding point cloud data, the devicecomprising: memory configured to store the point cloud data; and one ormore processors implemented in circuitry and coupled to the memory, theone or more processors being configured to: determine dimensions of aregion box; determine dimensions of a slice bounding box; and decode aslice of the point cloud data associated with the slice bounding box,wherein the dimensions of the region box are constrained to not exceedthe dimensions of the slice bounding box.

Clause 59. The device of clause 58, wherein the dimensions of the regionbox are constrained such that no point in the region box is outside theslice bounding box.

Clause 60. The device of clause 58 or 59, wherein the one or moreprocessors are further configured to: determine a slice dimension; parsea trisoup node size syntax element indicative of a size of a node codedwith trisoup coding mode; and

-   -   decode the point cloud data based on the size of the node,        wherein a value of the trisoup node size syntax element is        constrained to not exceed the slice dimension.

Clause 61. The device of any combination of clauses 58-60, wherein theone or more processors are further configured to: parse an attributeslice header syntax element indicative of a number of regions where thedelta quantization parameter will be applied; and decode the point clouddata based on the number of regions, wherein a value of the attributeslice header syntax element is constrained within a range of 0 to N,where N is a predetermined value.

Clause 62, The device of any combination of clauses 58-61, wherein theone or more processors are further configured to: parse a geometry sliceheader syntax element indicative of a geometry parameter set identifier,wherein the value of the geometry slice header syntax element isrestricted to be in a range of 0 to 15 inclusive, and wherein the one ormore processors decode the point cloud data further based on a geometryparameter set identified by the geometry parameter set identifier.

Clause 63. The device of any combination of clauses 58-62, wherein theone or more processors are further configured to: parse an attributeslice header syntax element indicative of an attribute parameter setidentifier, wherein the value of the attribute slice header syntaxelement is restricted to be in a range of 0 to 15 inclusive, and whereinthe one or more processors decode the point cloud data further based onan attribute parameter set identified by the attribute parameter setidentifier.

Clause 64. A device for decoding point cloud data, the devicecomprising: memory configured to store the point cloud data; and one ormore processors implemented in circuitry and coupled to the memory, theone or more processors being configured to: determine a first sliceidentifier (ID) of a first geometry slice associated with a frame of thepoint cloud data; determine a second slice ID of a second geometry sliceassociated with the frame of the point cloud data; based on the secondslice ID being equal to the first slice ID, determine the second sliceto contain identical content to the first slice; and decode the pointcloud data based on the first slice ID.

Clause 65. The device of clause 64, wherein the one or more processorsare further configured to: determine a slice dimension; parse a trisoupnode size syntax element indicative of a size of a node coded withtrisoup coding mode; and decode the point cloud data based on the sizeof the node, wherein a value of the trisoup node size syntax element isconstrained to not exceed the slice dimension.

Clause 66. The device of clause 64 or 65, wherein the one or moreprocessors are further configured to: parse an attribute slice headersyntax element indicative of a number of regions where a deltaquantization parameter will be applied; and decode the point cloud databased on the number of regions, wherein a value of the attribute sliceheader syntax element is constrained within a range of 0 to N, where Nis a predetermined value.

Clause 67. The device of any combination of clauses 64-66, wherein theone or more processors are further configured to: parse a geometry sliceheader syntax element indicative of a geometry parameter set identifier,wherein the value of the syntax element is restricted to be in a rangeof 0 to 15 inclusive, and wherein the one or more processors decode thepoint cloud data further based on a geometry parameter set identified bythe geometry parameter set identifier.

Clause 68. The device of any combination of clauses 64-67, wherein theone or more processors are further configured to: parse an attributeslice header syntax element indicative of an attribute parameter setidentifier, wherein the value of the attribute slice header syntaxelement is restricted to be in a range of 0 to 15 inclusive, and whereinthe one or more processors decode the point cloud data further based onan attribute parameter set identified by the attribute parameter setidentifier.

Clause 69. A device for decoding point cloud data, the devicecomprising: memory configured to store the point cloud data; and one ormore processors implemented in circuitry and coupled to the memory, theone or more processors being configured to: determine whether anattribute dimension of an attribute is greater than 1; based on theattribute dimension being greater than 1, parse an attribute sliceheader syntax element indicative of a delta quantization parameter; anddecode the point cloud data based on the delta quantization parameter.

Clause 70. The device of clause 69, wherein as part of determiningwhether the attribute dimension is greater than 1, the one or moreprocessors are configured to parse a syntax element in a sequenceparameter set.

Clause 71. The device of clause 69 or 70, wherein the one or moreprocessors are further configured to: determine a slice dimension; parsea trisoup node size syntax element indicative of a size of a node codedwith trisoup coding mode; and decode the point cloud data based on thesize of the node, wherein a value of the trisoup node size syntaxelement is constrained to not exceed the slice dimension.

Clause 72. The device of any combination of clauses 69-71, wherein theone or more processors are further configured to: parse an attributeslice header syntax element indicative of a number of regions where adelta quantization parameter will be applied; and decode the point clouddata based on the number of regions, wherein a value of the attributeslice header syntax element is constrained within a range of 0 to N,where N is a predetermined value.

Clause 73. The device of any combination of clauses 69-72, wherein theone or more processors are further configured to: parse a geometry sliceheader syntax element indicative of a geometry parameter set identifier,wherein a value of the geometry slice header syntax element isrestricted to be in a range of 0 to 15 inclusive, and wherein the one ormore processors decode the point cloud data further based on a geometryparameter set identified by the geometry parameter set identifier.

Clause 74. The device of any combination of clauses 69-73, wherein theone or more processors are further configured to: parse an attributeslice header syntax element indicative of an attribute parameter setidentifier, wherein a value of the attribute slice header syntax elementis restricted to be in a range of 0 to 15 inclusive, and wherein the oneor more processors decode the point cloud data further based on anattribute parameter set identified by the attribute parameter setidentifier.

It is to be recognized that depending on the example, certain acts orevents of any of the techniques described herein can be performed in adifferent sequence, may be added, merged, or left out altogether (e.g.,not all described acts or events are necessary for the practice of thetechniques). Moreover, in certain examples, acts or events may beperformed concurrently, e.g., through multi-threaded processing,interrupt processing, or multiple processors, rather than sequentially.

In one or more examples, the functions described may be implemented inhardware, software, firmware, or any combination thereof. If implementedin software, the functions may be stored on or transmitted over as oneor more instructions or code on a computer-readable medium and executedby a hardware-based processing unit. Computer-readable media may includecomputer-readable storage media, which corresponds to a tangible mediumsuch as data storage media, or communication media including any mediumthat facilitates transfer of a computer program from one place toanother. e.g., according to a communication protocol. In this manner,computer-readable media generally may correspond to (1) tangiblecomputer-readable storage media which is non-transitory or (2) acommunication medium such as a signal or carrier wave. Data storagemedia may be any available media that can be accessed by one or morecomputers or one or more processors to retrieve instructions, codeand/or data structures for implementation of the techniques described inthis disclosure. A computer program product may include acomputer-readable medium.

By way of example, and not limitation, such computer-readable storagemedia can comprise RAM, ROM, EEPROM, CD-ROM or other optical diskstorage, magnetic disk storage, or other magnetic storage devices, flashmemory, or any other medium that can be used to store desired programcode in the form of instructions or data structures and that can beaccessed by a computer. Also, any connection is properly termed acomputer-readable medium. For example, if instructions are transmittedfrom a website, server, or other remote source using a coaxial cable,fiber optic cable, twisted pair, digital subscriber line (DSL), orwireless technologies such as infrared, radio, and microwave, then thecoaxial cable, fiber optic cable, twisted pair, DSL, or wirelesstechnologies such as infrared, radio, and microwave are included in thedefinition of medium. It should be understood, however, thatcomputer-readable storage media and data storage media do not includeconnections, carrier waves, signals, or other transitory media, but areinstead directed to non-transitory, tangible storage media. Disk anddisc, as used herein, includes compact disc (CD), laser disc, opticaldisc, digital versatile disc (DVD), floppy disk and Blu-ray disc, wheredisks usually reproduce data magnetically, while discs reproduce dataoptically with lasers. Combinations of the above should also be includedwithin the scope of computer-readable media.

Instructions may be executed by one or more processors, such as one ormore digital signal processors (DSPs), general purpose microprocessors,application specific integrated circuits (ASICs), field programmablegate arrays (FPGAs), or other equivalent integrated or discrete logiccircuitry. Accordingly, the terms “processor” and “processingcircuitry,” as used herein may refer to any of the foregoing structuresor any other structure suitable for implementation of the techniquesdescribed herein. In addition, in some aspects, the functionalitydescribed herein may be provided within dedicated hardware and/orsoftware modules configured for encoding and decoding, or incorporatedin a combined codec. Also, the techniques could be fully implemented inone or more circuits or logic elements.

The techniques of this disclosure may be implemented in a wide varietyof devices or apparatuses, including a wireless handset, an integratedcircuit (IC) or a set of ICs (e.g., a chip set). Various components,modules, or units are described in this disclosure to emphasizefunctional aspects of devices configured to perform the disclosedtechniques, but do not necessarily require realization by differenthardware units. Rather, as described above, various units may becombined in a codec hardware unit or provided by a collection ofinteroperative hardware units, including one or more processors asdescribed above, in conjunction with suitable software and/or firmware.

Various examples have been described. These and other examples arewithin the scope of the following claims.

What is claimed is:
 1. A method of decoding point cloud data, the methodcomprising: determining dimensions of a region box; determiningdimensions of a slice bounding box; and decoding a slice of the pointcloud data associated with the slice bounding box, wherein thedimensions of the region box are constrained to not exceed thedimensions of the slice bounding box.
 2. The method of claim 1, whereinthe dimensions of the region box are constrained such that no point inthe region box is outside the slice bounding box.
 3. The method of claim1, further comprising: determining a slice dimension; parsing a trisoupnode size syntax element indicative of a size of a node coded withtrisoup coding mode; and decoding the point cloud data based on the sizeof the node, wherein a value of the trisoup node size syntax element isconstrained to not exceed the slice dimension.
 4. The method of claim 1,further comprising: parsing an attribute slice header syntax elementindicative of a number of regions where a delta quantization parameterwill be applied; and decoding the point cloud data based on the numberof regions, wherein a value of the attribute slice header syntax elementis constrained within a range of 0 to N, where N is a predeterminedvalue.
 5. The method of claim 1, further comprising: parsing a geometryslice header syntax element indicative of a geometry parameter setidentifier, wherein a value of the geometry slice header syntax elementis restricted to be in a range of 0 to 15 inclusive, and wherein thedecoding the point cloud data is further based on a geometry parameterset identified by the geometry parameter set identifier.
 6. The methodof claim 1, further comprising: parsing an attribute slice header syntaxelement indicative of an attribute parameter set identifier, wherein avalue of the attribute slice header syntax element is restricted to bein a range of 0 to 15 inclusive, and wherein the decoding the pointcloud data is further based on an attribute parameter set identified bythe attribute parameter set identifier.
 7. A method of decoding pointcloud data, the method comprising: determining whether an attributedimension of an attribute is greater than 1; based on the attributedimension being greater than 1, parsing an attribute slice header syntaxelement indicative of a delta quantization parameter; and decoding thepoint cloud data based on the delta quantization parameter.
 8. Themethod of claim 7, wherein determining whether the attribute dimensionis greater than 1 comprises parsing a syntax element in a sequenceparameter set.
 9. The method of claim 7, further comprising: determininga slice dimension; parsing a trisoup node size syntax element indicativeof a size of a node coded with trisoup coding mode; and decoding thepoint cloud data based on the size of the node, wherein a value of thetrisoup node size syntax element is constrained to not exceed the slicedimension.
 10. The method of claim 7, further comprising: parsing anattribute slice header syntax element indicative of a number of regionswhere the delta quantization parameter will be applied; and decoding thepoint cloud data based on the number of regions, wherein a value of theattribute slice header syntax element is constrained within a range of 0to N, where N is a predetermined value.
 11. The method of claim 7,further comprising: parsing a geometry slice header syntax elementindicative of a geometry parameter set identifier, wherein a value ofthe geometry slice header syntax element is restricted to be in a rangeof 0 to 15 inclusive, and wherein the decoding the point cloud data isfurther based on a geometry parameter set identified by the geometryparameter set identifier.
 12. The method of claim 7, further comprising:parsing an attribute slice header syntax element indicative of anattribute parameter set identifier, wherein a value of the attributeslice header syntax element is restricted to be in a range of 0 to 15inclusive, and wherein the decoding the point cloud data is furtherbased on an attribute parameter set identified by the attributeparameter set identifier.
 13. A device for decoding point cloud data,the device comprising: memory configured to store the point cloud data;and one or more processors implemented in circuitry and coupled to thememory, the one or more processors being configured to: determinedimensions of a region box; determine dimensions of a slice boundingbox; and decode a slice of the point cloud data associated with theslice bounding box, wherein the dimensions of the region box areconstrained to not exceed the dimensions of the slice bounding box. 14.The device of claim 13, wherein the dimensions of the region box areconstrained such that no point in the region box is outside the slicebounding box.
 15. The device of claim 13, wherein the one or moreprocessors are further configured to: determine a slice dimension; parsea trisoup node size syntax element indicative of a size of a node codedwith trisoup coding mode; and decode the point cloud data based on thesize of the node, wherein a value of the trisoup node size syntaxelement is constrained to not exceed the slice dimension.
 16. The deviceof claim 13, wherein the one or more processors are further configuredto: parse an attribute slice header syntax element indicative of anumber of regions where a delta quantization parameter will be applied;and decode the point cloud data based on the number of regions, whereina value of the attribute slice header syntax element is constrainedwithin a range of 0 to N, where N is a predetermined value.
 17. Thedevice of claim 13, wherein the one or more processors are furtherconfigured to: parse a geometry slice header syntax element indicativeof a geometry parameter set identifier, wherein a value of the geometryslice header syntax element is restricted to be in a range of 0 to 15inclusive, and wherein the one or more processors decode the point clouddata further based on a geometry parameter set identified by thegeometry parameter set identifier.
 18. The device of claim 13, whereinthe one or more processors are further configured to: parse an attributeslice header syntax element indicative of an attribute parameter setidentifier, wherein a value of the attribute slice header syntax elementis restricted to be in a range of 0 to 15 inclusive, and wherein the oneor more processors decode the point cloud data further based on anattribute parameter set identified by the attribute parameter setidentifier.
 19. A device for decoding point cloud data, the devicecomprising: memory configured to store the point cloud data; and one ormore processors implemented in circuitry and coupled to the memory, theone or more processors being configured to: determine whether anattribute dimension of an attribute is greater than 1; based on theattribute dimension being greater than 1, parse an attribute sliceheader syntax element indicative of a delta quantization parameter; anddecode the point cloud data based on the delta quantization parameter.20. The device of claim 19, wherein as part of determining whether theattribute dimension is greater than 1, the one or more processors areconfigured to parse a syntax element in a sequence parameter set. 21.The device of claim 19, wherein the one or more processors are furtherconfigured to: determine a slice dimension; parse a trisoup node sizesyntax element indicative of a size of a node coded with trisoup codingmode; and decode the point cloud data based on the size of the node,wherein a value of the trisoup node size syntax element is constrainedto not exceed the slice dimension.
 22. The device of claim 19, whereinthe one or more processors are further configured to: parse an attributeslice header syntax element indicative of a number of regions where adelta quantization parameter will be applied; and decode the point clouddata based on the number of regions, wherein a value of the attributeslice header syntax element is constrained within a range of 0 to N,where N is a predetermined value.
 23. The device of claim 19, whereinthe one or more processors are further configured to: parse a geometryslice header syntax element indicative of a geometry parameter setidentifier, wherein a value of the geometry slice header syntax elementis restricted to be in a range of 0 to 15 inclusive, and wherein the oneor more processors decode the point cloud data further based on ageometry parameter set identified by the geometry parameter setidentifier.
 24. The device of claim 19, wherein the one or moreprocessors are further configured to: parse an attribute slice headersyntax element indicative of an attribute parameter set identifier,wherein a value of the attribute slice header syntax element isrestricted to be in a range of 0 to 15 inclusive, and wherein the one ormore processors decode the point cloud data further based on anattribute parameter set identified by the attribute parameter setidentifier.